3

このLinqクエリを使用したリストがあります

filterEntities = (from list in filterEntities where list.Id== 0 && list.Id== 1 && list.Id == 3 && list.Id== 6 select list).OrderBy(r => r.Id).ToList();

今、このlinqは次のようなリストを返します

ID  Age
0    18
0    19
1    21
3    24
6    32
6    08

次のように返される同じIDの合計を使用してリストを生成したい

ID  Age
0    37
1    21
3    24
6    40

可能なクエリを提案してください

4

3 に答える 3

4

このようにグループを使用しようとしていると思います

List<int> ids = new List<int>() { 0, 1, 3, 6 };

filterEntities = (from list in filterEntities 
                  where ids.Contains(list.Id)
                  group list by list.id into g
                  orderby g.Key
                  select new 
                  {
                    ID = g.Key,
                    Age = g.Sum(x => x.Age),
                  }).ToList();
于 2012-04-23T13:21:00.080 に答える
1

長い式は少しわかりにくいので、次のようにクエリをクリーンアップします。

var idList = new List<int> { 0, 1, 3, 6};

filterEntities = from e in filterEntities 
                 where idList.Contains(e.Id)
                 group e by e.Id into g
                 select new { Id = g.Key, Sum = g.Sum(e =>e.Age) };
于 2012-04-23T13:26:25.367 に答える
0
filterEntities =  filterEntities.Where(l=>new[] { 0, 1, 3, 6 }.Contains(l.Id))
                                .Sum(c=>c.Age)
                                .GroupBy(r=>r.Id)                                   
                                .ToList();
于 2012-04-23T13:20:04.990 に答える