GroupBy в лямбда-выражениях

from x in myCollection
    group x by x.Id into y
    select new { 
       Id = y.Key, 
       Quantity = y.Sum(x => x.Quantity)
    };

Как Вы записали бы вышеупомянутое как лямбда-выражение? Я застреваю на group into часть.

23
задан fracz 27 May 2015 в 21:42
поделиться

3 ответа

Продолжения запросов (select...into и group...into, но не join...into) эквивалентны простому разделению выражения запроса. Поэтому мне нравится думать о вашем примере так:

var tmp = from x in myCollection
          group x by x.Id;
var result = from y in tmp
             select new { 
               Id = y.Key, 
               Quantity = y.Sum(x => x.Quantity)
             };

Измените их в точечную нотацию:

var tmp = myCollection.GroupBy(x => x.Id);
var result = tmp.Select(y => new { 
               Id = y.Key, 
               Quantity = y.Sum(x => x.Quantity)
             });

Затем вы можете объединить их обратно:

var tmp = myCollection.GroupBy(x => x.Id)
                      .Select(y => new { 
                                Id = y.Key, 
                                Quantity = y.Sum(x => x.Quantity)
                              });

Как только вы разберетесь, что компилятор C# делает с выражениями запросов, остальное будет относительно просто :)

48
ответ дан 29 November 2019 в 01:08
поделиться
myCollection.GroupBy(x => x.Id)
            .Select(y => new {
                                 Id = y.Key,
                                 Quantity = y.Sum(x => x.Quantity)
                             });
8
ответ дан 29 November 2019 в 01:08
поделиться
myCollection
    .GroupBy(x => x.Id)
    .Select(x => 
        new 
        { 
          Id = x.Key, 
          Quantity = x.Sum(y => x.Quantity
        });
6
ответ дан 29 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: