Подтвердить что ты не робот

Как получить SUM в Linq?

Мне нужно сделать следующее: у меня есть List с классом, который содержит 2 целых id и count

Теперь я хочу выполнить следующий запрос linq:

get the sum of the count for each id

но могут быть элементы с одним и тем же идентификатором, поэтому он должен быть летом, например:

id=1, count=12
id=2, count=1
id=1, count=2

может быть:

id=1 -> sum 14
id=2 -> sum 1

как это сделать?

4b9b3361

Ответ 1

Group элементы Id, а затем sum Count в каждая группа:

var result = items.GroupBy(x => x.Id)
                  .Select(g => new { Id = g.Key, Sum = g.Sum(x => x.Count) });

Ответ 2

Попробуйте,

 .GroupBy(x => x.id)
 .Select(n => n.Sum(m => m.count));

Ответ 3

Следующая программа...

struct Item {
    public int Id;
    public int Count;
}

class Program {

    static void Main(string[] args) {

        var items = new [] {
            new Item { Id = 1, Count = 12 },
            new Item { Id = 2, Count = 1 },
            new Item { Id = 1, Count = 2 }
        };

        var results =
            from item in items
            group item by item.Id
            into g
            select new { Id = g.Key, Count = g.Sum(item => item.Count) };

        foreach (var result in results) {
            Console.Write(result.Id);
            Console.Write("\t");
            Console.WriteLine(result.Count);
        }

    }

}

... печатает:

1       14
2       1