我在LINQ - Full Outer Join找到了这段代码:
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,
};
包含此代码的答案得到了很多赞成,但我在这里观察到了一些错误。在左外连接中,它使用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,
};