使用Linq同时查询两个集合

时间:2012-09-17 15:07:42

标签: c# .net linq collections

如果我有2个对象集合,是否可以在一个查询中有效地加入它们并从中选择它们?

例如:

var collection1 = GetSomeData();
var collection2 = GetSomeMoreData();

var myResult = from x in collection1
               from y in collection2
               where x.SomeProperty = "Yes"
               where y.SomeProperty = "Yes"
               select x, select y;

GetSomeDataGetSomeMoreData都返回IEnumerable<MyType>

显然这不会编译......但希望它能说明我正在尝试做什么......

1 个答案:

答案 0 :(得分:6)

我想你想要Enumerable.Concat

var myResult = collection1.Concat(collection2)
                          .Where(x => x.SomeProperty == "Yes");

或在查询语法中:

var myResult = from x in collection1.Concat(collection2)
               where x.SomeProperty == "Yes"
               select x;

请注意,在LINQ的上下文中,您使用的“join”一词通常是指基于某个键找到(和配对/分组)两个序列之间的公共元素。这不是你打算做的,是吗?