Abdalla Ben Omran Ответов: 1

Что такое ключ в anonymous-types {select new} ?


Во - первых, я так охотно спрашиваю здесь, потому что получаю очень полезное "объяснение"
речь идет о ключе в анонимных типах :

в моем коде, если я отлажу "запрос", я увижу :
[0] = { GetKey = { Size = "18 ZOLL", Colour = "ACTION" }, GetCount = 1 }

тогда я получу GetCount = 1
а на Гетки я посмотрю
GetKey = { Size = "18 ZOLL", Colour = "ACTION" }


Мне нужно понять, что такое ключ, потому что с другим кодом я как будто озадачился ключом ?
хорошее объяснение, основанное на этом примере, мне очень поможет .
спасибо всегда заранее

Что я уже пробовал:

var query = (from ph in _webshopDbContext.FXXLPurchaseHeaders
                         join pl in _webshopDbContext.FXXLPurchaseLines on ph.No_ equals pl.Document_No_
                         where ph.Ship_to_Name_2 == "Zentrallager" && pl.Brand == "CUBE"
                          && ph.Order_Date >= minDateInclusive
                          && ph.Order_Date < maxDateExclusive
                         group pl by new
                         {
                             pl.Size,
                             pl.Colour
                         }
                         into NewGroupResult
                         select new 
                         {
                            GetKey = NewGroupResult.Key,
                            GetCount = NewGroupResult.Count()

                         });

1 Ответов

Рейтинг:
6

dnxit

При вызове метода groupBy, как правило, вы получаете целый ряд групп

IEnumerable<IGrouping<key, IEnumerable<T>>>

где каждая группировка имеет ключ используемый для создания группы
Также имеет IEnumerable<t> всех элементов, которые есть в вашем исходном наборе данных.

напр.
у нас есть класс клиентов с именем, номером заказа и количеством продуктов

CustomerInfo(имя, ordersCount, productsCount)

выборочные данные

Джо 1 5
Джейн 4 9
Иоанна 2 8
Джим 3 1
Жан 1 3
Джилл 2 5
джеб 3 3
Дженн 4 7
foreach(var item in data.GroupBy(i => i.OrdersCount)
                        .Select(group => new { 
                             Key = group.Key, 
                             Count = group.Count() 
                        }).OrderBy(x => x.OrdersCount)
{
     Console.WriteLine($"Key : {item.Key} Count : {item.Count}");
}

(Группа 1): [Джо 1 5, Жан 1 3]
(Группа 2): [Джон 2 8, Джилл 2 5]
(Группа 3): [Джим 3 1, джеб 3 3]
(Группа 4): [Джейн 4 9, Дженн 4 7]

В вашем случае вы устанавливаете два ключа для идентификации записи как составной ключ
group pl by new
{
    pl.Size,
    pl.Colour
}

вот почему ваш ключ выглядит так
Ключ = { размер = "18 ZOLL", цвет = "действие" }

Таким образом, это зависит от структуры и данных, которые вы пытаетесь сгруппировать, соответственно, у вас будет ключ и подмножество
IEnumerable<T>
из супер набора этих данных.

Надеюсь, это развеет ваши сомнения :)


[no name]

Думаю, да . мне просто нужно еще немного потренироваться. Благодарю вас

dnxit

Я с радостью помогу Вам