Rob*_*vey 4 c# linq extension-methods group-by
public void Linq40()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var numberGroups =
from n in numbers
group n by n % 5 into g
select new { Remainder = g.Key, Numbers = g };
foreach (var g in numberGroups)
{
Console.WriteLine("Numbers with a remainder of {0} when divided by 5:",
g.Remainder);
foreach (var n in g.Numbers)
{
Console.WriteLine(n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
什么是纯粹的c#等价物?我明白了......
var numberGroups = numbers.GroupBy(n => n % 5)...
Run Code Online (Sandbox Code Playgroud)
但into条款是一个有点神秘,我无法弄清楚如何获得Key从Select.
numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });
Run Code Online (Sandbox Code Playgroud)
的GroupBy返回IEnumerable<T>的<IGrouping<TKey, TSource>.有了这个,你可以做第二个Select操作,它返回与上面完全相同的值:
var numberGroups = numbers.GroupBy(n => n % 5)
.Select(g => new { Remainder = g.Key, Numbers = g });
Run Code Online (Sandbox Code Playgroud)