我应该声明这不是排列问题,我想在C#中这样做。我有一个可变数量的字符串列表,每个列表都有可变数量的元素。
例如:
清单1: 一 两个
清单2: 乌诺 DOS TRES
清单3: 1 2 3 4
结果最终应该是: OneUno1 OneUno2 OneUno3 OneUno4 OneDos1 OneDos2 OneDos3 OneDos4 OneTres1 OneTres2 OneTres3 OneTres4 TwoUno1 TwoUno2 TwoUno3 TwoUno4 TwoDos1 TwoDos2 TwoDos3 TwoDos4 TwoTres1 TwoTres2 TwoTres3 TwoTres4
这里真正的问题是最终列表可以非常快地变得非常大,所以如果我在内存中执行此操作会遇到问题,所以我的想法是将字符串写入文件,因为我生成它们但是我&#39 ;我在尝试找出执行此操作的逻辑/算法时遇到问题。
答案 0 :(得分:2)
var list1 = new[]{"One", "Two"};
var list2 = new[]{"Uno", "Dos", "Tres"};
var list3 = new[]{1,2,3,4};
var result = from a in list1
from b in list2
from c in list3
select new {a, b, c};
foreach(var item in result)
{
Console.WriteLine(item.a + " " + item.b + " " + item.c);
}
答案 1 :(得分:1)
您需要的是简单的交叉 Join
。
IEnumerable<string> results = from l1 in list1
from l2 in list2
from l3 in list3
select string.Format("{0}{1}{2}", l1, l2, l3);
我不太确定你的情况下输出的大小,如果它真的很大并且希望以块的形式将它写入文件,你可以这样做。
注意以前的Linq语句只返回IEnumerable<string>
。
foreach(var smallchunk in results.Take(1000))
{
System.IO.File.AppendAllLines("filepath", smallChunk);
}