Ask*_*ken 5 c# linq cross-join
是否可以使用 linq 进行交叉连接,其中连接数事先未知?
我有这个:
var arrays = new List<string[]>();
Run Code Online (Sandbox Code Playgroud)
如果我知道我可以做三个列表:
var oQuery = from x in arrays[0]
from y in arrays[1]
from z in arrays[2]
select new {x, y, z};
Run Code Online (Sandbox Code Playgroud)
是否可以n使用 linq连接字符串数组?
小智 1
请尝试以下解决方案来获取给定“N”个字符串数组的笛卡尔积。
static void Main(string[] args)
{
var arrays = new List<string[]>();
var arr1 = new string[] { "A", "B", "C" };
var arr2 = new string[] { "D", "E", "F" };
var arr3 = new string[] { "G", "H", "I" };
arrays.Add(arr1);
arrays.Add(arr2);
arrays.Add(arr3);
IEnumerable<Tuple<string,string>> oQuery1 = null;
int count = arrays.Count;
var k = arrays[0].AsEnumerable();
for (int i =1; i< count; i++)
{
var l1 = arrays[i];
oQuery1 = k.SelectMany((x) => l1, (x, y) => Tuple.Create( x, y ));
k = oQuery1.Select(x=>x.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)