Несколько из пунктов в LINQ - PullRequest
1 голос
/ 02 ноября 2009

Как это выражение запроса LINQ может быть перевыражено вызовами метода расширения?

public static List<Tuple<int, int>> Concat()
{
    return (from x in Enumerable.Range(1, 3)
           from y in Enumerable.Range(4, 3)
           select new Tuple<int, int>(x, y)).ToList();
}

Ответы [ 2 ]

10 голосов
/ 02 ноября 2009
return Enumerable.Range(1, 3).SelectMany(x => Enumerable.Range(4, 3)
           .Select(y => new Tuple<int, int>(x, y))).ToList();

Ваша версия выглядит более читабельно: -)

2 голосов
/ 02 ноября 2009
Enumerable.Range(1, 3).SelectMany(
    i => Enumerable.Range(4, 3),
    (i, j) => new Tuple<int, int>(i, j)
).ToList();
...