LINQ中的多个from子句

时间:2009-11-02 20:32:55

标签: c# linq extension-methods

如何使用扩展方法调用重新表达此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 个答案:

答案 0 :(得分:10)

return Enumerable.Range(1, 3).SelectMany(x => Enumerable.Range(4, 3)
           .Select(y => new Tuple<int, int>(x, y))).ToList();

您的版本看起来更具可读性: - )

答案 1 :(得分:2)

Enumerable.Range(1, 3).SelectMany(
    i => Enumerable.Range(4, 3),
    (i, j) => new Tuple<int, int>(i, j)
).ToList();