可枚举连接-连接两个列表
本文关键字:连接 两个 列表 枚举 | 更新日期: 2023-09-27 18:03:33
我有两个列表(List),其中包含以下数据:
列表一个
James
Jack
Laura
Harry
两个<<p> 列表/strong> Jeffery
Peters
Smith
是否可以使用Enumerable Join来执行以下操作:
James Jeffery
James Peters
James Smith
Jack Jeffery
Jack Peters
Jack Smith
Laura Jeffery
Laura Peters
Laura Smith
Harry Jeffery
Harry Peters
Harry Smith
Harry Jeffery
这是什么类型的Join ?
这是一个交叉连接:
List<string> textLines1 = new List<string>() {
"Kames", "Jack", "Laura", "Harry"
};
List<string> textLines2 = new List<string>() {
"Jeffery", "Peters", "Smith"
};
var query = from t1 in textLines1
from t2 in textLines2
select string.Format("{0} {1}", t1, t2);
var results = query.ToList();
返回您期望的内容。
也可以使用基于方法的查询:
var query2 = textLines1.SelectMany(t1 => textLines2, (t1, t2) => string.Format("{0} {1}", t1, t2));
var results2 = query2.ToList();
在Linq中应该是:
List<string> TabOne = new List<string>() { "Kames", "Jack", "Laura", "Harry" };
List<string> TabTwo = new List<string>() { "Jeffery", "Peters", "Smith" };
var combo = from p in TabOne
from c in TabTwo
select new
{
Name = p,
SurName = c
};
var l1 = new []{ "James", "Jack", "Laura", "Harry" };
var l2 = new []{ "Jeffery", "Peters", "Smith" };
var result = from i1 in l1
from i2 in l2
select i1 + " " + i2;
这也被称为Cartesian Product
, Eric有一篇关于它的博客文章
您可以这样尝试:
var result = list1.SelectMany(i1 => list2.Select(i2 => i1 + " " + i2));
示例:
class Program
{
public static void Main()
{
string[] list1 = new[] { "James", "Jack", "Laura", "Harry" };
string[] list2 = new[] { "Jeffery", "Peters", "Smith" };
var result = list1.SelectMany(i1 => list2.Select(i2 => i1 + " " + i2));
foreach (string s in result)
{
Console.WriteLine(s);
}
}
}
App输出:
James Jeffery
James Peters
James Smith
Jack Jeffery
Jack Peters
Jack Smith
Laura Jeffery
Laura Peters
Laura Smith
Harry Jeffery
Harry Peters
Harry Smith