玩转C# LINQ:理解并掌握GroupBy的第三种用法
最编程
2024-08-10 16:22:20
...
public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);
官方释义:根据指定的键选择器函数对序列中的元素进行分组,并且通过使用指定的函数对每个组中的元素进行投影。
这个比第一种用法多了一个elementSelector,第一种用法是对集合本身按照TKey分组,并将自己(TSource)添加到分组内,而当前的用法则可以选择自己想要添加到分组内的元素类型。
编写客户端实验代码如下:
var groups = personList.GroupBy(p => p.Gender, p=>p.Name); foreach (var group in groups) { Console.WriteLine(group.Key.ToString()); foreach(var name in group) { Console.WriteLine($"\t{name}"); } }
以上代码是按照p.Gender进行分组,并将p.Name作为组内的元素。
输出结果如下:
其等价的LINQ语句为:
var groups = from p in personList group p.Name by p.Gender;