LINQ中的Group By操作符允许我们按照指定的键对集合进行分组,并且可以进行多条件查询。
具体的实现方法可以使用
GroupBy
方法。
GroupBy
方法接受一个函数参数,该函数定义了分组的键值,返回值为一个新的
IGrouping<TKey,TElement>
对象,其中TKey为键类型,TElement为值类型。
如果需要对多个条件进行分组,则可以使用匿名类型来实现。例如,假设我们有一个
Person
类,其中包含
Name
、
Age
和
Country
属性,我们可以使用以下代码对其进行多条件分组:
var groups = people.GroupBy(p => new { p.Age, p.Country });
上面的代码将people
集合按照Age
和Country
两个属性进行分组。结果是一个新的集合,其中的元素类型是IGrouping<AnonymousType, Person>
。在这个匿名类型中,Age
和Country
属性都作为键,以便我们可以访问具有相同年龄和国家的人的集合。
我们可以进一步操作分组后的集合,例如,可以使用Select
方法从每个组中选择一个或多个属性:
var result = groups.Select(g => new { Age = g.Key.Age, Country = g.Key.Country, Count = g.Count() });
上面的代码从分组后的集合中选择了Age
、Country
和每个组中的元素数量,结果是一个新的集合,其中的元素类型是AnonymousType
。
希望这个例子可以帮助您理解如何在LINQ中进行多条件分组查询。