2015-11-12 2 views
2

Я пытаюсь лучше понять нотации метода LINQ.Пытается понять нотацию метода 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 ("Продукты")

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 }); 

У меня возникли проблемы с пониманием x.Key в методе Select. Я не уверен, как его набор или когда я могу/не могу его использовать.

+0

x является перечислителем, как в цикле foreach: foreach (x в testDs.Tables ["Products"]. Строки()) – jdweng

ответ

2

x.Key относится к обработке результатов метода GroupBy.

Когда вы сделаете это

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

результатом является IEnumerable из IGrouping<K,V> - пар ключ/значение, где Key свойство представляет значение Property, на которых сгруппированы элементы.

Поскольку в вашем случае группировка делается на строку, представляющую первую букву ProductName или ProductCategory, то есть то, что вы получаете, когда вы ссылаетесь x.Key в каждой из групп, возвращаемых запросом.

Смежные вопросы