Какие методы расширения C # эквивалентны для этого запроса Linq? - PullRequest
4 голосов
/ 23 ноября 2010

В этот пример:

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);
        }
    }
}

Что такое чистый эквивалент C #?Я понимаю это ...

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

, но предложение into немного загадочно, и я не могу понять, как получить Key от Select.

Ответы [ 2 ]

8 голосов
/ 23 ноября 2010

GroupBy возвращает IEnumerable<T> из <IGrouping<TKey, TSource>. При этом вы можете выполнить вторую операцию выбора, которая возвращает значения точно так же, как указано выше:

var numberGroups = numbers.GroupBy(n => n % 5)
                          .Select(g => new { Remainder = g.Key, Numbers = g });
8 голосов
/ 23 ноября 2010
numbers.GroupBy(n => n % 5).Select(g => new { Remainder = g.Key, Numbers = g });
...