Linq group by statement
本文关键字:statement by group Linq | 更新日期: 2023-09-27 18:09:30
我尝试执行动态linq group-by查询。第二个linq语句应该产生与第一个linq语句相同的结果。
谁能告诉我为什么第二个linq语句不能工作?
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("ProductName");
dt.Rows.Add("1", "aa", "TypeA");
dt.Rows.Add("2", "bb", "TypeA");
dt.Rows.Add("3", "cc", "TypeB");
第一个linq:
var lotSum = dt.AsEnumerable()
.GroupBy(x => new
{ id = x.Field<string>("id")
, product = x.Field<string>("ProductName"),
}
).ToList();
Second Linq //不能工作??
var gcol = new string[] { "ID", "ProductName" };
var gtype = dt.Rows[0].GetType();
var lotSum2 = dt.AsEnumerable()
.GroupBy(g => string.Join(",",
gcol.Select(c => gtype.GetProperty(c).GetValue(g, null)))).ToList();
ID和ProductName不是DataRow的属性,它们是列的名称。你可以使用索引器访问它们……gcol.Select(c=>g[c]),假设g是DataRow