J'ai une requête qui fonctionne parfaitement en SQL, mais j'ai le plus de mal à le convertir en linq. La table (Table1 ci-dessous) contient des changements d'état pour plusieurs types d'enregistrements. La jointure nécessite la définition de deux champs pour créer la jointure valide: A SubmissionId (pk de la table à laquelle appartient l'état) et SubmissionTypeId (détermine à quelle table appartient l'état).Convertir SQL Query en Linq (contient des jointures à gauche)
CREATE TABLE ##Table1 (Id int, Status varchar(50), SubmissionId int, SubmissionTypeId int)
insert into ##Table1(Id, Status, SubmissionId, SubmissionTypeId)
select 1 ,'Status1' ,1 , 1
union select 2,'Status2',1, 2
CREATE TABLE ##Table2 (ID int, Value varchar(50))
insert into ##Table2 (ID, Value)
select 1, 'Value1Table2'
CREATE TABLE ##Table3 (ID int, Value varchar(50))
insert into ##Table3 (ID, Value)
select 1, 'Value1Table3'
select ds.* from ##Table1 ds
left join ##Table2 di
on ds.SubmissionId = di.Id and ds.SubmissionTypeId = 2
left join ##Table2 dr
on ds.SubmissionId = dr.Id and ds.SubmissionTypeId = 1
where SubmissionTypeId in (1,2)
J'ai essayé quelques itérations en utilisant l'en x de y dans x.DefaultIfEmpty() et je ne peux pas définir la clause where dans le bon emplacement. J'ai besoin de démarrer la requête avec Table1 car c'est de là que viennent les valeurs. Pour contourner le problème, je divise la requête en deux parties et je viens d'ajouter séquentiellement les données d'état à une liste, mais il semble qu'il y ait une meilleure solution.
Merci.
Merci. Je n'ai pas essayé d'utiliser la fonction .Any dans la clause where. Je vais donner un coup de feu. – Noel
A travaillé comme un charme. – Noel