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

Linq group by statement

ID和ProductName不是DataRow的属性,它们是列的名称。你可以使用索引器访问它们……gcol.Select(c=>g[c]),假设g是DataRow