如何从多个列表/数组中连接元素以形成一个列表,其中包含原始列表中的所有唯一值?

时间:2016-04-03 00:58:00

标签: c# list

我应该声明这不是排列问题,我想在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 ;我在尝试找出执行此操作的逻辑/算法时遇到问题。

2 个答案:

答案 0 :(得分:2)

Example

    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); 
}