我尝试执行动态 linq 分组查询。第二个 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();
第二个 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();