Wie kann ich mich wenden diese LINQ schließt sich in LEFT OUTER beitritt?
-
12-09-2019 - |
Frage
var auditAgencyRecords = (from ag in db.Agencies
join ara in db.AuditRuleAccounts on ag.Agency_Id equals ara.AgencyID
join arr in db.AuditRuleResults on ara.AuditRuleAccountID equals arr.AuditRuleAccountID
join are in db.AuditRuleEnterprises on arr.AuditRuleEnterpriseID equals are.AuditRuleEnterpriseID
where (rules.Select(r => r.EnterpriseID).Contains(arr.AuditRuleEnterpriseID))
select new
{
AgencyID = ag.Agency_Id,
AgencyName = ag.Agency_Name,
AuditRuleEnterpriseID = arr.AuditRuleEnterpriseID,
AuditRuleEnterpriseName = are.OverrideDisplayName,
CorrectedDate = arr.CorrectedDate,
NbrDaysToCorrect = arr.NbrDaysToCorrect,
});
Also, ich bin immer noch ziemlich neu in LINQ to SQL und ich brauche Hilfe, herauszufinden, wie diese in eine linke äußere drehen verbinden, anstatt eine innere Verknüpfung.
Von dieser Abfrage oben, ich bin auf der Suche alle Agenturen aus der Agenturen Tisch haben, und dann die Datensätze auf der rechten Seite (EnterpriseID, CorrectedDate, etc) null sein kann, etc, wenn keine Datensätze vorhanden sind.
Ich bin ziemlich sicher, ich brauche Select zu verwenden, aber ich konnte einige Hinweise verwenden drehen diejenigen schließt sich in LEFT OUTER JOINS, so habe ich eine Liste aller Agenturen dann ihre möglichen Aufzeichnungen auf der rechten Seite.
Lösung
Im Folgenden finden Sie einige Code, bekommen Sie begonnen haben.
var auditAgencyRecords = (
from ag in db.Agencies
group join ara in db.AuditRuleAccounts on ag.Agency_Id equals ara.AgencyID into AgAra = group
from w in AgAra.DefaultIfEmpty()
group join arr in db.AuditRuleResults on ara.AuditRuleAccountID equals arr.AuditRuleAccountID into AraArr = group
from x in AraArr.DefaultIfEmpty()
group join are in db.AuditRuleEnterprises on arr.AuditRuleEnterpriseID equals are.AuditRuleEnterpriseID into ArrAre = group
from y in ArrAre.DefaultIfEmpty()
where (rules.Select(r => r.EnterpriseID).Contains(arr.AuditRuleEnterpriseID))
select new
{
AgencyID = w.Agency_Id,
AgencyName = w.Agency_Name,
AuditRuleEnterpriseID = y.AuditRuleEnterpriseID,
AuditRuleEnterpriseName = y.OverrideDisplayName,
CorrectedDate = w.CorrectedDate,
NbrDaysToCorrect = w.NbrDaysToCorrect,
});
Andere Tipps
Hier ist ein gutes Beispiel dafür, wie es zu tun. Es ist wichtig, nicht über NULL-Werte zu vergessen, dass diese zurückbringen können -. Das hat mich gebissen einmal hart