2012-09-17 150 views
2

如果我有两个对象集合,是否有可能有效地将它们连接起来,并在两个集合中进行选择?与Linq同时查询两个集合

例如:

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; 

GetSomeData,并GetSomeMoreData都返回IEnumerable<MyType>

显然,这并不编译...但希望它给的什么,我试图做的想法的插图...

+0

'myResult'究竟应该包含什么?也许添加一个例子? – svick

回答

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的上下文中,通常指的是发现(和配对/分组上)基于两个序列之间的共同元件一些关键。那不是你打算做的,是吗?

+0

谢谢......我应该思考一下string.concat ;-)“join”的术语是让我绕圈 – Alex