J'ai une requête linq dont j'ai besoin pour faire des jointures à gauche au lieu de jointures internes. Tous les exemples que je vois montrent seulement 1 jointure gauche, mais quand je l'ai essayé avec 2 je ne pouvais pas le faire correctement. Alors, comment cela changerait-il d'utiliser 2 jointures à gauche?left joindre 2 tables en utilisant linq
ruleSets = (from rs in db.RuleSets
join brs in db.BatchRuleSets on rs.ID equals brs.RuleSetID
join b in db.Batches on brs.BatchID equals b.id
where !clientId.HasValue || b.ClientID == clientId.Value
where !batchId.HasValue || brs.BatchID == batchId.Value
select new
{
rs.ID,
rs.Description,
rs.IsActive,
rs.CreatedDate,
rs.EffectiveDate,
rs.ExpirationDate,
BatchName = b.FileName,
b.ClientID
}).ToList().Select(x => new {
x.ID,
x.Description,
x.IsActive,
x.CreatedDate,
x.EffectiveDate,
x.ExpirationDate,
x.BatchName,
ClientName = GetClientName(x.ClientID)});
Whar er Ror obtenez-vous? –
Je n'obtiens pas d'erreur Je veux juste tous les enregistrements sans avoir un BatchRuleSet ou un Batch –
Pourquoi sélectionnez-vous, puis appelez 'ToList()', puis sélectionnez à nouveau? Tout d'abord le 'ToList()' ne fait vraiment rien car le second select le retourne à un IEnumerable et en second lieu vous pouvez faire votre transform entière dans le premier select –