DataTable快速定製之Expression屬性表達式

本文旨在討論使用DataColumn.Expression屬性定製列,高手繞過。sql

這裏只介紹兩個經典的場景,拋磚引玉其餘更多功能待各位讀者本身發現吧!數據庫

場景一:express

DataTable裏有兩個列分別爲每種商品的[price]單價和[Num]數量,如今須要獲得每種商品的總價值:spa

方法一(不推薦):.net

增長一列[Value],遍歷DataTable用每一行的[price]*[num]獲得價值,而後賦給列[value],代碼以下:code

dt.Columns.Add("value");//增長新列value存儲總價值
foreach(DataRow dr in dt.Rows)//遍歷計算每種商品總值並存儲到列[value]中{
    dr["value"] = dr["price"]*dr["num"];
}

以後就能夠進行常規的綁定展現操做。blog

方法二(推薦):資源

增長一列[Value],使用該列的Expression屬性定製此列,代碼以下:字符串

dt.Columns.Add("value");
dt.Columns["value"].Expression = "price * num";

這樣就行了,以後就能夠進行常規的綁定展現操做,由於Expression表達式是延遲執行的,即綁定時才執行,因此沒有綁定的狀況下,看到的DataTable內容仍是不變的,若是要獲得在此表達式做用下的表請使用方法:toTable();get

以下:

DataTable newTable = dt.DefaultView.ToTable();

這裏只介紹了數學表達式的用法,相似的加減除法均可以這樣實現,若是是要鏈接字符串怎麼辦呢?請見下面的例子:

場景二:

好比:DataTable中有兩列分別是[Name]部門名稱和[DepartId]部門ID,如今須要一個部門和ID鏈接在一塊兒的列用來展現好比:人力資源部-010怎麼作呢?方法同上,這裏就要用到字符串鏈接表達式了,見代碼:

dt.Columns["NameAndId"].Expression = "name+'-'+departid";

這裏的「+」用做鏈接字符串的做用,不再用一個個遍歷的方法來實現相似的功能了,固然Expression表達式能夠發揮的做用遠不止這些,詳見:http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression.aspx

不止列能夠定製,咱們也能夠像使用sql操做數據庫那樣操做DataTable的行,此時要用到DataTable.DefaultView.RowFilter屬性。下次再介紹吧有興趣的能夠本身搜索一下。

出處:http://blog.csdn.net/jacky4955/article/details/7282678

相關文章
相關標籤/搜索