是否可以使用linq枚举两个IEnumerables的所有排列

时间:2010-04-13 13:05:20

标签: c# linq ienumerable permutation

我可以使用循环来做到这一点,但有没有办法获取两个IEnumerables,枚举所有可能的排列并选择一个包含排列的对象?我觉得这应该是“应该”,但我不确定要使用哪些操作符。

由于 詹姆斯

2 个答案:

答案 0 :(得分:8)

你在谈论基本上是笛卡尔式的加入吗?你可以做点什么

var query = from item1 in enumerable1
            from item2 in enumerable2
            select new { Item1 = item1, Item2 = item2 }

答案 1 :(得分:5)

Anthony's answer是正确的。等效的扩展方法是:

var query = enumerable1.SelectMany(
                x => enumerable2,
                (item1, item2) => new { Item1 = item1, Item2 = item2 }
            );

var query = enumerable1.SelectMany(
                item1 => enumerable2.Select(item2 => 
                    new { Item1 = item1, Item2 = item2 });
            );