Bonjour,
j’aimerai pouvoir optimiser mes jointure faite dynamiquement,
en effet le code qui suit est quelque peu lent, ce qui nuit a l'utilisation du soft.
J'ai vu sur des forums qu'il était possible de faire de multiple inner join sur une même table de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
from A in As 
from B in Bs
from C in Cs
where A.ID == B.ID || A.ID == C.ID select A
J'aimerrai pouvoir faire de même mais de façon dynamique via une methode, laquelle je ne trouve pas.


Voici mon code de base que j'aimerrai optimiser :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
            IQueryable<Souscription> baseReq = req;
            req = null;
            foreach (var item in ModeSouscriptions)
            {
                if (item is ModeSouscriptionAgence)
                {
                    IQueryable<Souscription> souReq = from souscription in baseReq
                                                      join mode in Context.ModeSouscription.OfType<ModeSouscriptionAgence>()
                                                       on souscription.ModeSouscription_ModeSouscriptionID equals mode.ModeSouscriptionID
                                                      select souscription;
                    if (req == null)
                        req = souReq;
                    else
                        req = req.Union(souReq);
                }
                else if (item is ModeSouscriptionCourrier)
                {
                    IQueryable<Souscription> souReq = from souscription in baseReq
                                                      join mode in Context.ModeSouscription.OfType<ModeSouscriptionCourrier>()
                                                       on souscription.ModeSouscription_ModeSouscriptionID equals mode.ModeSouscriptionID
                                                      select souscription;
                    if (req == null)
                        req = souReq;
                    else
                        req = req.Union(souReq);
                }
}
Merci, a bientôt