ich diesen Code bei LINQ - Full Outer Join gefunden:Implementierung Differenz zwischen dem linken äußeren Verknüpfung und rechte äußere Verknüpfung in 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,
};
Die Antwort mit diesem Code eine Menge upvotes bekam, aber ich beobachte hier etwas nicht stimmt. Im linken äußeren Join verwendet es into
und from
mit der zweiten Entität, in der rechten äußeren Verknüpfung tut es das gleiche. Beide Implementierungen scheinen mir also gleich zu sein. Können Sie mir den Unterschied zwischen linker äußerer Verbindung und rechter äußerer Verbindung erklären? Danke im Voraus.
EDIT:
denke ich, rechte äußere Verknüpfung sollte wie folgt sein:
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,
};
Es tut das gleiche auf dieser Website: http://www.dotnetfunda.com/codes/show/1849/how-to-use-left-right-outer-join-in-linq Ich kann wirklich nicht sehen ein Unterschied :( – jason
Ich verstehe die Frage nicht. Die Art, wie Sie links etwas in ein Recht etwas drehen Sie tauschen die linken und rechten Dinge. Was ist hier getan worden. Warum denken Sie, das ist falsch? –
'temp' Variable ist vom Typ' IEnumerable 'in linken Join, ist aber vom Typ' IEnumerable 'in rechts, also gibt es einen Unterschied. –
Evk