Ich habe zwei Abfragen, die wie folgt aussehen:LINQ LEFT OUTER JOIN - Objektverweis nicht auf eine Instanz eines Objekts festgelegt
var ret = (from x in _context.CustomUsers
where x.Name != currentUser
join c in _context.Claims on x.Name equals c.UserID into m
from c in m.DefaultIfEmpty()
select new UsersClients
{
UserName = x.Name,
DefaultClient = "N/A",
Role = null
}).ToList();
Dies ist eine Liste zurück, wie so:
User1 N/A null
User2 N/A null
User3 N/A null
Hierzu :
var q = (from x in _context.Claims
where x.Default == true
select new
{
x.UserID,
x.ClientName
}).ToList();
Dies gibt eine Liste wie folgt:
User1 Client1
User2 Client3
Die erste Abfrage gibt Benutzer zurück, die in der zweiten Abfrage nicht vorhanden sind. Ich möchte dann einen linken äußeren Join auf beiden Ergebnissen machen, damit ich den Klienten von der zweiten Frage ziehen kann und wenn es leer ist. Ersetzen Sie es durch eine Zeichenfolge.
Meine dritte Abfrage sieht wie folgt aus:
var p = (from x in ret
join o in q on x.UserName equals o.UserID into l
from s in l.DefaultIfEmpty()
select new UsersClients
{
UserName = x.UserName,
DefaultClient = (s.ClientName == null ? "God dammit work" : s.ClientName),
Role = null
}).ToList();
Ich weiß, warum es nicht, ich weiß nur nicht, wie es zu beheben. Kann mir jemand helfen, so sieht das Endergebnis wie folgt aus:
User1 Client2 null
User2 Client1 null
User3 Work dammit null
Mögliches Duplikat [Kann nicht mehr links abfrage beitreten in C#/Linq] (http : //stackoverflow.com/questions/38430511/unable-to-query-multiple-left-join-in-c-linq) –