2010-10-19 332 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:

加入保留的外的 元素的順序,並且爲每個 這些元件,內的 匹配元素的順序的。

另一個微不足道的問題是,切換'外部'和'內部'將意味着委託參數的順序也必須交換。