请原谅我缺乏更好的术语。我有一个string[],我想得到一个与自己连接的乘积的乘积,以后再放入字典中。但是,我希望所有可能的组合, 除非 有一个克隆/重复键。
string[]
string[] array1 = { "aa", "bb", "cc" }; string[][] arrayOfArrays = array1.SelectMany(left => array1, (left, right) => new string[] { left, right }).ToArray();
string[][]从所有可能的组合中获取a 作为每个元素:
string[][]
aa aa aa bb aa cc bb aa bb bb bb cc cc aa cc bb cc cc
我想在这里理解的是,当您得到这样的结果时,联接被称为什么:
aa bb aa cc bb aa bb cc cc aa cc bb
这样,当我制作字典时,我不必进入for循环并取出值对的那些键。如果您在1-liner或lambda中对此进行了演示,那么我很乐意看到它,因为我试图进一步了解这种语法。
我不确定它的名称,但是您可以使用Where子句来过滤出那些匹配的值。
Where
string[][] arrayOfArrays = array1.SelectMany(left => array1, (left, right) => new string[] { left, right }) .Where(x => x[0] != x[1]) .ToArray();