Linq to Object将两个数组合并为一对多

时间:2014-12-17 10:54:33

标签: c# linq linq-to-objects

我有2个列表,其中包含下一个类型IList<string>IList<int> 例如,我在第一个列表中有下一个值

AA
BB
CC

和其他数组

1
2

我想获得下一个结果的组合列表

AA 1
BB 1
CC 1
AA 2
BB 2
CC 2

是否可以使用LINQ to Object?

3 个答案:

答案 0 :(得分:3)

如果订单无关紧要,那么:

from left in new List<string>{"AA", "BB", "CC"}
from right in new List<string>{"1", "2"}
   select string.Format("{0} {1}", left, right)

输出:

AA 1 
AA 2 
BB 1 
BB 2 
CC 1 
CC 2 

它被称为笛卡尔积:Is there a good LINQ way to do a cartesian product?

答案 1 :(得分:1)

如果你想要一个字符串列表,那么这应该可以解决问题:

var result = numbers
    .SelectMany(x => letters.Select(l => string.Join(" ", l, x)).ToList();

答案 2 :(得分:1)

试试这个:

static void Main(string[] args)
{
   List<string> firstList = new List<string>();
   firstList.Add("AA");
   firstList.Add("BB");
   firstList.Add("CC");

   List<int> secondList = new List<int>();
   secondList.Add(1);
   secondList.Add(2);

   var lstFinal = (from f1 in firstList
                   from f2 in secondList
                   select new { f1, f2 }).ToList();
   foreach (var s in lstFinal)
   {
       Console.WriteLine(s.f1 + " " +s.f2);
   }
   Console.Read();
}

输出:

AA 1 
AA 2 
BB 1 
BB 2 
CC 1 
CC 2