如何在c#中使用两个列表的笛卡尔连接?

时间:2011-02-15 14:35:49

标签: c# linq

如何将两个包含整数的列表与笛卡尔连接?

这可以用linq完成吗?

3 个答案:

答案 0 :(得分:69)

假设您的意思是“交叉连接”或“笛卡尔连接”:

var query = from x in firstList
            from y in secondList
            select new { x, y }

或者:

var query = firstList.SelectMany(x => secondList, (x, y) => new { x, y });

如果您想要其他内容(正如您在评论中看到的那样,“交叉产品”一词会引起一些混淆),请适当地编辑您的问题。一个例子非常方便:)

答案 1 :(得分:8)

为了好奇,实现这一目标的另一种方式(产生与Jon Skeet的答案相同的结果)是:

firstList.Join(secondList, x => true, y => true, (m, n) => new { m, n });

答案 2 :(得分:1)

如果您不喜欢查询语法(像我自己一样),我认为MoreLINQ提供了a method,因为它更干净:

using MoreLinq;

// ....

firstList.Cartesian(secondList, (x, y) => new { x, y });