0
我嘗試執行動態linq group-by查詢。第二個linq語句應該生成與第一個linq語句相同的結果。
任何人都可以告訴我爲什麼第二個linq語句不能工作?Linq group by statement
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();
第二個LINQ不同於第一個 - 第二個不投射匿名類型(這就是爲什麼在第一個LINQ中,由2個字段組成的組的原因)。 – code4life
第二個不會引發異常,因爲「ID」和「ProductName」不是DataRow類型的公共屬性? –