2010-10-19 154 views
0

到目前为止,在LINQ中进行连接操作时,我不知道如何确定哪个列表必须先出现,哪个列表必须出现。假设我有两个列表,List<Product>List<Order>列表<Product>。加入(列表<Order>,...)与列表<Order>。加入(列表<Product>,...)?

编辑:

我的困惑是决定

List<Product>.Join(List<Order>, ...) 

List<Order>.Join(List<Product>, ...) 

+0

如果你的查询是正确的,你将不需要'决定',这就是底层的Linq表达式所做的。你能向我们展示一个你不能“决定”的例子吗? – RPM1984 2010-10-19 02:45:04

+0

列表。加入(列表,...)或列表。加入(列表,...)<===这是我的困惑。 – xport 2010-10-19 02:48:28

回答

1

Enumerable.Join执行内部,equijoin。从MSDN:

“内”意味着只有元素 具有被包括在结果 与另一序列的匹配。一个'equijoin' 是一个连接,其中的键是 比较的平等。

因此,该序列的选择被认为是在“外部”一个具有上的项目没有影响,这将是本在查询的结果。所有(outer, inner)对针对他们各自的预测是相等将使他们的方式。

然而,会有在结果项目的排序方面的影响。从MSDN:

加入保留的外的 元素的顺序,并且为每个 这些元件,内的 匹配元素的顺序的。

另一个微不足道的问题是,切换'外部'和'内部'将意味着委托参数的顺序也必须交换。