我發現這個代碼在LINQ - Full Outer Join:實現差異連接和右外連接在LINQ
var leftOuterJoin = from first in firstNames
join last in lastNames
on first.ID equals last.ID
into temp
from last in temp.DefaultIfEmpty(new { first.ID, Name = default(string) })
select new
{
first.ID,
FirstName = first.Name,
LastName = last.Name,
};
var rightOuterJoin = from last in lastNames
join first in firstNames
on last.ID equals first.ID
into temp
from first in temp.DefaultIfEmpty(new { last.ID, Name = default(string) })
select new
{
last.ID,
FirstName = first.Name,
LastName = last.Name,
};
包含此代碼的答案有很多upvotes的,但我在這裏觀察了什麼。在左外連接中,它使用into
和from
與第二個實體,在右外連接中執行相同操作。所以,這兩個實現對我來說都是一樣的。你能告訴我左外連接和右外連接的區別嗎?提前致謝。
編輯:
我覺得右外連接應該是這樣的:
var rightOuterJoin = from first in firstNames
join last in lastNames
on first.ID equals last.ID
into temp
from first in temp.DefaultIfEmpty(new { last.ID, Name = default(string) })
select new
{
last.ID,
FirstName = first.Name,
LastName = last.Name,
};
它在這個網站也是一樣的:http://www.dotnetfunda.com/codes/show/1849/how-to-use-left-right-outer-join-in-linq我真的看不到不同的是:( – jason
我不明白這個問題,你把左邊的東西變成正確的東西是你交換左邊和右邊的東西,這是在這裏做了什麼,你爲什麼認爲這是錯誤的? –
'temp'變量的類型是'IEnumerable'在左連接中,但是在右邊的'IEnumerable '類型,所以有差別。 –
Evk