Comment puis-je convertir la déclaration ci-dessous SQL à LINQ:Convertir SQL à LINQ pour la gauche se joindre à NULL en droit
SELECT A.Application, B.Filter
FROM Applications A left join Filters B on A.Application = B.Filter OR
B.Filter is null
J'ai écrit ce qui suit, mais je suis incapable de comprendre comment ajouter « OU B. le filtre est NULL » à elle:
var filteredApproved = (from f in
(from a in Applications
join b in Filters on a.Application equals b.Filter into rss
from ss in rss.DefaultIfEmpty()
select new {
a.Application,
Filter = (b == null ? 0: b.Filter)
})
Par exemple, si les applications et table de filtre sont les suivantes:
Application
---------
A
B
Filter
--------
A
null
I je suis vouloir le résultat suivant
Application Filter
--------- ------
A A
A null
B null
retourne la requête Linq:
Application Filter
--------- ------
A A
B null
Il ne retourne pas la deuxième ligne que SQL retourne. Je dois ajouter "OU B.Filter est NULL" à linq.
Comment sont vos objets définis, et quelles relations avez-vous entre eux? – krillgar
Donc vous voulez une jointure externe gauche dans LINQ (et vous auriez pu l'utiliser en SQL!) Cela en fait une copie exacte de [cette question] (https://stackoverflow.com/questions/3404975/left-outer-join -in-linq) – oerkelens
Par exemple, si les applications et table de filtre sont les suivantes: application --------- A B Filtre -------- A null Je veux le résultat suivant application Filtre --------- ------ A \t A A null B null – Sanjeev