Sql Linq中的访问查询

Sql Linq中的访问查询,sql,linq,ms-access,Sql,Linq,Ms Access,我有一个复杂的access sql查询要在linq中转换 我就是这么做的: var query = from p in tbl_multiIntervenants.AsEnumerable() join q in ( from s in tbl_contrats.AsEnumerable()

我有一个复杂的access sql查询要在linq中转换

我就是这么做的:

 var query = from p in tbl_multiIntervenants.AsEnumerable()
                        join q in 
                                ( 
                                  from s in tbl_contrats.AsEnumerable()
                                    join t in 
                                            (
                                                from u in tbl_traitement_gapp.AsEnumerable()
                                                join v in tbl_TP.AsEnumerable()
                                                on u.Field<string>("Identifiant tâche") equals v.Field<string>("Identifiant tâche") into joined 
                                                from jointe in joined.DefaultIfEmpty()
                                                select jointe
                                              )  

                                    ) 

以下是sql查询的简化步骤:

SELECT Tbl_TP.Société, Tbl_CONTRATS.Appartenance
FROM Tbl_Multi_Intervenants 
INNER JOIN (Tbl_CONTRATS 
            INNER JOIN (Tbl_TP LEFT JOIN Tbl_Traitement_GAPP ON Tbl_TP.Identifiant tâche] = Tbl_Traitement_GAPP.[Identifiant tâche]) 
                ON Tbl_CONTRATS.Emplacement = Tbl_TP.[N° Site]) 
                ON Tbl_Multi_Intervenants.[Identifiant tâche] = Tbl_TP.[Identifiant tâche]
WHERE (((Tbl_Traitement_GAPP.[Identifiant tâche]) Is Null))
SELECT Tbl_TP.Société, Tbl_CONTRATS.Appartenance
FROM Tbl_Multi_Intervenants 
INNER JOIN (Tbl_CONTRATS 
            INNER JOIN (Tbl_TP LEFT JOIN Tbl_Traitement_GAPP ON Tbl_TP.Identifiant tâche] = Tbl_Traitement_GAPP.[Identifiant tâche]) 
                ON Tbl_CONTRATS.Emplacement = Tbl_TP.[N° Site]) 
                ON Tbl_Multi_Intervenants.[Identifiant tâche] = Tbl_TP.[Identifiant tâche]
WHERE (((Tbl_Traitement_GAPP.[Identifiant tâche]) Is Null))