如何获得linq计数结果的总和

时间:2014-09-22 14:41:25

标签: linq count

我有一个人名和年龄等数据库。我有一个查询按名称分组,并获得符合条件的每个名称的数量。 ListHelper类型只是一个包含两个属性的类。

IEnumerable<ListHelper> HelperEnumerable = null
HelperEnumerable = _repository.Persons
         .Where(b => b.Age < 18)
             .GroupBy(
                     n => n.FirstName
                     , a => a.FirstName
                     , (key, count) => new ListHelper { Name = key, Amount = count.Count() }
                     );

当我ToList()HelperEnumerable时,结果如下: 姓名:&#34; Michael&#34;,金额:100, 姓名:&#34; Eva&#34;,金额:122, 姓名:&#34; Lisa&#34;,金额:71, 等

我如何获得类似的结果,但是所有符合条件的人数都会得到如下结果: 姓名:&#34;全部&#34;,金额:17280

我想拥有键值对,所以其余代码都可以保持不变,只有这个查询会返回所有matchig行的计数,而不是按任何特定的columm分组。

我试过这个只返回int计数:

HelperEnumerable = _repository.Persons
             .Where(b => b.Age < 18).Count();

我无法添加

.Select(a => (key,count) new ListHelper{ key = "All", count = a })

在Count()之后尝试将结果投影为两个字段。

1 个答案:

答案 0 :(得分:1)

做什么:

IEnumerable<ListHelper> HelperEnumerable = null
HelperEnumerable = _repository.Persons
         .Where(b => b.Age < 18)
             .GroupBy(
                     n => "All"
                     , (key, count) => new ListHelper { Name = key, Amount = count.Count() }
                     );

你不需要这样做吗?

或者为什么不呢:

new ListHelper{ key = "All", count = _repository.Persons.Where(b => b.Age < 18).Count() };

...