Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 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.

like image 914
Robert Harvey Avatar asked Nov 22 '10 22:11

Robert Harvey


2 Answers

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 });
like image 77
Reed Copsey Avatar answered Oct 24 '22 07:10

Reed Copsey


numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });
like image 8
BFree Avatar answered Oct 24 '22 07:10

BFree