Lamdba及DataTable AsEnumerable()的使用

Lamdba及AsEnumerable()介绍

Lamdba是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First, Single, ToList…的时候)才执行。

1.Where语句使用

var var_dtTable = dtTable.AsEnumerable().Where(W => W[“NAME”].ToString()==“张三”);
int count = var_dtTable.Count();//获取dtTable中NAME为张三的个数

2.Average语句使用

//获取dtTable中avg_name列的平局数
int avg = dtTable.AsEnumerable().Average(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(“sum_name”)), //获取列名为sum_name数据的和
count_name= s.Count(m => m.Field(“count_name”)) //获取列名为count_name数据的个数
});
//对应的顺序为dtResult列的顺序
var_dtTable.ToList().ForEach(f=> dtResult.Rows.Add(f.groupBy_name,f.sum_name,f.count_name);

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();

作者:MapleGone
来源:CSDN
原文:https://blog.csdn.net/qq_33754098/article/details/76273462
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/ITX2000/article/details/86616759