LINQ:GroupBy
public static IEnumerable<IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (
this IEnumerable
Func<TSource,TKey> keySelector,
Func<TSource,TElement> elementSelector);
类型参数
TSource
source
的元素类型。
TKey
keySelector
返回的键的类型。
TElement
IGrouping<TKey,TElement> 中元素的类型。
参数
source
IEnumerable
要对其元素进行分组的 IEnumerable
keySelector
Func<TSource,TKey>
用于提取每个元素的键的函数。
elementSelector
Func<TSource,TElement>
用于将每个源元素映射到 IGrouping<TKey,TElement> 中的元素的函数。
分组
/* IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
* this IEnumerable<TSource> source,
* Func<TSource, TKey> keySelector);
*/
// 使用 Age 作为键值对宠物进行分组
// 并且值为每个值选择宠物的Name
IEnumerable<IGrouping<int, string>> query =
pets.GroupBy(pet => pet.Age, pet => pet.Name);
查询表达式
IEnumerable<IGrouping<int, string>> query =
from pet in pets
group pet.Name by pet.Age;
匿名类型分组
IEnumerable<IGrouping<int, string>> query =
pets.GroupBy(pet => new { pet.Age }, pet => new { pet.Name} );
查询表达式
IEnumerable<IGrouping<int, string>> query =
from pet in pets
group new { pet.Name} by new { pet.Age };