开发者

What is the C# extension methods equivalent for this Linq query?

开发者 https://www.devze.com 2023-01-26 15:59 出处:网络
In this example: public void Linq40() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var numberGroups =

In this example:

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开发者_StackOverflow 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);
        }
    }
}

What is the pure c# equivalent? I get this...

var numberGroups = numbers.GroupBy(n => n % 5)...

but the into clause is a bit of a mystery, and I can't figure out how to get the Key from the Select.


GroupBy returns an IEnumerable<T> of <IGrouping<TKey, TSource>. With this, you can do a second Select operation, which returns values exactly like above:

var numberGroups = numbers.GroupBy(n => n % 5)
                          .Select(g => new { Remainder = g.Key, Numbers = g });


numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });
0

精彩评论

暂无评论...
验证码 换一张
取 消