c# Lamdba及DataTable AsEnumerable()的使用


Lamdba是延遲執行的,實際上什么都沒有發生,當真正使用對象的時候(例如調用:First, Single, ToList….的時候)才執行。

1.Where
var var_dtTable = dtTable.AsEnumerable().Where<DataRow>(W => W["NAME"].ToString()=="張三");
int count = var_dtTable.Count<DataRow>();//獲取dtTable中NAME為張三的個數

2.Average
//獲取dtTable中avg_name列的平局數
int avg = dtTable.AsEnumerable().Average<DataRow>(A => float.Parse(A["avg_name"].ToString()))

3.GroupBy
DataTable dtTable = new DataTable();//數據源
DataTable dtResult = new DataTable();
dtResult.Columns.Add("groupBy_name", typeof(string));
dtResult.Columns.Add("sum_name", typeof(int));
dtResult.Columns.Add("count_name", typeof(int));
var var_dtTable= dtTable.AsEnumerable().GroupBy(G => G["groupBy_name"].ToString()).Select(S => new {
                groupBy_name= s.Key,//獲取分組的值
                sum_name= s.Sum(m => m.Field<int>("sum_name")),//獲取列名為sum_name數據的和
                count_name= s.Count(m => m.Field<int>("count_name"))//獲取列名為count_name數據的個數
                });
var_dtTable.ToList().ForEach(f=> dtResult.Rows.Add(f.groupBy_name,f.sum_name,f.count_name);//對應的順序為dtResult列的順序

4.OrderBy
DataTable dtTable = new DataTable();//數據源
dtTable = dtTable.AsEnumerable().OrderByDescending(o => o["OrderBy_name"]).CopyToDataTable();//降序
dtTable = dtTable.AsEnumerable().OrderBy(o => o["OrderBy_name"]).CopyToDataTable();//升序

5.Distinct
DataTable dtTable = new DataTable();//數據源
//column_name是要Distinct列的名字
dtTable = dtTable.AsEnumerable().Distinct(new ColumnEquals("column_name")).CopyToDataTable();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM