我正在尝试更好地理解 LINQ 方法符号。
假设我有一个数据表:
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。我不确定它是如何设置的或者我什么时候可以/不能使用它。
最佳答案
x.Key
特定于 GroupBy
的处理结果方法。
当你这样做时
var res = someData.GroupBy(item => item.Property);
结果是 IEnumerable
的IGrouping<K,V>
- 键/值对,其中Key
属性代表 Property
的值项目在其上进行分组。
因为在您的情况下,分组是在代表 ProductName
的第一个字母的字符串上完成的。或ProductCategory
,这就是您引用 x.Key
时得到的结果在查询返回的每个组中。
关于c# - 尝试理解 LINQ 方法表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680667/