试图理解LINQ方法表示法

本文关键字:方法 表示 LINQ | 更新日期: 2023-09-27 18:21:52

我正在努力更好地理解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));

假设从数据表("产品")加载可变产品

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键时遇到问题。我不知道它是如何设置的,也不知道什么时候可以/不能使用它。

试图理解LINQ方法表示法

x.Key特定于处理GroupBy方法的结果。

当你做这个

var res = someData.GroupBy(item => item.Property);

结果是IGrouping<K,V>-键/值对中的IEnumerable,其中Key属性表示对项目进行分组的Property的值。

由于在您的情况下,分组是在表示ProductNameProductCategory的第一个字母的字符串上完成的,因此当您在查询返回的每个组中引用x.Key时,就会得到该字符串。