Linq:从两个Linq源生成一个结果
我有两个linq语句,它们都产生相同类型的输出。如何将这两个LINQ语句合并成一个列表 例如:Linq:从两个Linq源生成一个结果,linq,concat,Linq,Concat,我有两个linq语句,它们都产生相同类型的输出。如何将这两个LINQ语句合并成一个列表 例如: var list1 = new List<string>() {"hello", "world", "!"}; var list2 = new List<string>() {"hello 2", "world 2", "! 2"}; var linq1 = from item in list1 where item.Contains('o')
var list1 = new List<string>() {"hello", "world", "!"};
var list2 = new List<string>() {"hello 2", "world 2", "! 2"};
var linq1 = from item in list1
where item.Contains('o')
select item;
var linq2 = from item in list2
where item.Contains('l')
select item;
var joined = linq1.Concat(linq2);
我想把它放在一个linq语句中。您只需使用
Concat
。但是,您只需将查询放在那里,而不是linq.Concat(linq2)
:
var joined = list1.Where (w => w.Contains("o"))
.Concat(list2.Where (w => w.Contains("l")));
Concat没有等效的查询语法。()
所以你会这样做:
var joined = (from item in list1
where item.Contains('o')
select item)
.Concat(from item in list2
where item.Contains('l')
select item);
如果您想要一个
List
对象,var List=joined.ToList()
您想同时“合并”(联合
)还是同时“合并”?在前一种情况下,您必须重写GetHashCode
+Equals
或提供一个自定义IEqualityComparer
。我是否可以将其放入一个带有from项的linq语句中……,因为我非常喜欢这种语法:)
var joined = (from item in list1
where item.Contains('o')
select item)
.Concat(from item in list2
where item.Contains('l')
select item);