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到对象?
如果顺序无关紧要,那么这个:
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