Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以使用linq枚举两个IEnumerable的所有置换_C#_Linq_Ienumerable_Permutation - Fatal编程技术网

C# 是否可以使用linq枚举两个IEnumerable的所有置换

C# 是否可以使用linq枚举两个IEnumerable的所有置换,c#,linq,ienumerable,permutation,C#,Linq,Ienumerable,Permutation,我可以使用循环来实现这一点,但是有没有办法获取两个IEnumerable,枚举所有可能的排列,并选择包含排列的对象?我觉得这“应该”是可能的,但我不确定该使用什么操作符 谢谢 James你是说什么基本上是笛卡尔连接?你可以这样做 var query = from item1 in enumerable1 from item2 in enumerable2 select new { Item1 = item1, Item2 = item2 } 这是

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

谢谢
James你是说什么基本上是笛卡尔连接?你可以这样做

var query = from item1 in enumerable1
            from item2 in enumerable2
            select new { Item1 = item1, Item2 = item2 }
这是正确的。扩展方法等效为:

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


这可能是获得所有排列的方法——请记住它是O(n*m)。但是,如果只需要一个排列(比如说随机排列),最好在每个列表上使用带有随机索引的
ElementAt()
,以生成该排列。
var query = enumerable1.SelectMany(
                item1 => enumerable2.Select(item2 => 
                    new { Item1 = item1, Item2 = item2 });
            );