Linq to Object 将 2 个数组合二为一

本文关键字:数组 合二为一 to Object Linq | 更新日期: 2023-09-27 18:34:24

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

AA
BB
CC

和其他阵列

1
2

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

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

是否可以仅使用LINQ到对象?

Linq to Object 将 2 个数组合二为一

如果顺序无关紧要,那么这个:

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 
它被称为笛卡尔积

:有没有一个好的LINQ方法来做笛卡尔积?

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

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

试试这个:

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