从 IEnumerable<IGrouping<TKey, TSource>> GroupBy 获取所有组中所有分组项目的计数
get count of all the grouped items in all groups from IEnumerable<IGrouping<TKey, TSource>> GroupBy
我使用 LINQ GroupBy 按某些共同属性(重量、颜色等)将水果分组在一起,
然后我做了一些处理,从 IGroupings 列表中删除了一些组(连同该组中的所有水果)。
现在,我想找出(可能通过 LINQ)我在那个 IEnumerable> groupedFruits..
中的过程中剩下的所有组中的所有水果的总和
我该怎么做?
我不想知道我有多少组..但是,我想知道我在所有这些组中有多少水果
List<Fruit> fruits = getAllKindsOfFruits(); //maybe I get 1,000 fruits here
var groupsOfFruits= fruits.GroupBy(x => new { x.color, x.weight, x.type });
//
//<some process of narrowing down here, removing some groups of fruits that are disqualified>
//
//Here I want to count how many fruits are left, regardless of which group they belong to, maybe I get //just 300 fruits as a result
有没有一种方法可以仅使用 LINQ 来执行此操作,而不必遍历每个组来迭代计数器?
最简单的方法就是Sum
。
groupsOfFruits.Sum(group => group.Count());
可能有一天您将只需要计算不同的水果(如果某些水果可能属于不同的组)。那就有点难了。
groupsOfFruits.SelectMany(group => group)
.Distinct()
.Count();
SelectMany
"converts" 将您的分组变量放入简单的行 IEnumarable
中,您可以将其用作通用列表。
我使用 LINQ GroupBy 按某些共同属性(重量、颜色等)将水果分组在一起,
然后我做了一些处理,从 IGroupings 列表中删除了一些组(连同该组中的所有水果)。
现在,我想找出(可能通过 LINQ)我在那个 IEnumerable> groupedFruits..
中的过程中剩下的所有组中的所有水果的总和我该怎么做?
我不想知道我有多少组..但是,我想知道我在所有这些组中有多少水果
List<Fruit> fruits = getAllKindsOfFruits(); //maybe I get 1,000 fruits here
var groupsOfFruits= fruits.GroupBy(x => new { x.color, x.weight, x.type });
//
//<some process of narrowing down here, removing some groups of fruits that are disqualified>
//
//Here I want to count how many fruits are left, regardless of which group they belong to, maybe I get //just 300 fruits as a result
有没有一种方法可以仅使用 LINQ 来执行此操作,而不必遍历每个组来迭代计数器?
最简单的方法就是Sum
。
groupsOfFruits.Sum(group => group.Count());
可能有一天您将只需要计算不同的水果(如果某些水果可能属于不同的组)。那就有点难了。
groupsOfFruits.SelectMany(group => group)
.Distinct()
.Count();
SelectMany
"converts" 将您的分组变量放入简单的行 IEnumarable
中,您可以将其用作通用列表。