我试图更好地理解LINQ方法符号。
说我有一个DataTable:
DataTable table = new DataTable("Products");
table.Columns.Add("ProductID", typeof(int));
table.Columns.Add("ProductName", typeof(string));
table.Columns.Add("Category", typeof(string));
table.Columns.Add("UnitPrice", typeof(decimal));
table.Columns.Add("UnitsInStock", typeof(int));
假设从DataTable加载变量产品(" Products")
var products = testDS.Tables["Products"].AsEnumerable();
所以我知道我可以进行如下查询:
var productNameGroups = words4.GroupBy(x => x.Field<string>("ProductName").Substring(0, 1)).Select(x => new { FirstLetter = x.Key, Words = x});
var productGroups = products.GroupBy(p => p.Field<string>("Category")).Select(x => new { Category = x.Key, Products = x });
我在Select方法中抓住x.Key时遇到了麻烦。我不确定它的设置或我何时可以/不能使用它。
答案 0 :(得分:2)
x.Key
特定于处理GroupBy
方法的结果。
当你这样做时
var res = someData.GroupBy(item => item.Property);
结果是IEnumerable
IGrouping<K,V>
- 键/值对,其中Key
属性表示项目分组的Property
值。
因为在您的情况下,分组是在代表ProductName
或ProductCategory
的第一个字母的字符串上完成的,所以当您在返回的每个组中引用x.Key
时,这就是您所获得的通过查询。