0
Я пытаюсь выполнить динамический групповой запрос linq. Второй оператор 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();
Второй LINQ отличается от первого - второй не проектирует анонимный тип (что является причиной того, что группа по 2 полям работает в 1-м LINQ, кстати). – code4life
Не будет ли второе исключение, поскольку «ID» и «ProductName» не являются общедоступными свойствами типа DataRow? –