如何使用linq对数据表中的多个列进行分组? [复制]
Posted
技术标签:
【中文标题】如何使用linq对数据表中的多个列进行分组? [复制]【英文标题】:How to group by on multiple columns from datatable with linq? [duplicate] 【发布时间】:2013-12-20 07:49:16 【问题描述】:我正在使用 Linq 按我的数据表中的某些列进行分组
List<DataTable> tables = ds
.Tables[0]
.AsEnumerable()
.GroupBy(row => row.Field<string>("EMAIL"), row.Field<string>("NAME"))
.Select(g => g.CopyToDataTable())
.ToList();
我收到构建错误“当前上下文中不存在名称‘行’”?如何处理多个分组?
【问题讨论】:
【参考方案1】:为此使用匿名对象:
List<DataTable> tables = ds.Tables[0].AsEnumerable()
.GroupBy(row => new
Email = row.Field<string>("EMAIL"),
Name = row.Field<string>("NAME")
).Select(g => g.CopyToDataTable()).ToList();
【讨论】:
该错误是因为 lambda 表达式返回单个表达式 (row.Field<string>("EMAIL")
) 并且编译器将逗号后面的表达式作为 GroupBy
方法的另一个参数进行插入。由于这在表达式的上下文之外,没有row
变量,编译器会给出这个错误。这个答案通过让 lambda 表达式返回一个表达式 - 一个匿名对象来解决问题。以上是关于如何使用linq对数据表中的多个列进行分组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章