Bonjour,
j'ai un soucis avec une requête qui ne veut pas accepter la méthode .Contains dans une clause where.
Je voudrais faire l'équivalent du "WHERE x in (1,2,3)" du SQL.
Voici mon code :
après avoir exécuté cette requète, en mettant un espion sur la variable jalons et en voulant afficher les résultats, il me dit :
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
29
30
31
32 // construction des collection de périmètre var listFils = new List<int>(); var listEnts = new List<int>(); var listOps = new List<int>(); foreach(var p in currPerms){ var fk_p = urm.getfkPerineter(p.Id_PERIMETRE); if(fk_p.idEnt!=null && !listEnts.Contains(fk_p.idEnt)){ listEnts.Add(fk_p.idEnt); } if(fk_p.idFil!=null && !listFils.Contains(fk_p.idFil)){ listFils.Add(fk_p.idFil); } if(fk_p.idOp!=null && !listOps.Contains((int)fk_p.idOp)){ listOps.Add((int)fk_p.idOp); } } var listFils_q = listFils.AsQueryable(); var listEnts_q = listEnts.AsQueryable(); var listOps_q = listOps.AsQueryable(); // jalon de l'utilisateur var jalons=db.JALON .Include("FILIERE") .Include("ENTITE") .Include("OPERATION") .Where(a=> a.ACTIF==true && a.UTILISATEUR.ID_UTILISATEUR==lu.ID_UTILISATEUR && a.NUM_ENR.ID_ENR==fk_rem.IDEnr && (a.FILIERE != null && listFils_q.Contains(a.FILIERE.ID_FILIERE)) && (a.ENTITE != null && listEnts_q.Contains(a.ENTITE.ID_ENTITE)) && (a.OPERATION != null && listOps_q.Contains(a.OPERATION.ID_OPERAT)) );
J'ai essayé sans passer mes List en Queryable mais cela ne change pas le problème...{"LINQ to Entities ne reconnaît pas la méthode «*Boolean Contains[Int32](System.Linq.IQueryable`1[System.Int32], Int32)*», et cette dernière ne peut pas être traduite en expression de magasin."}
Merci d'avance.
PS : Framework .Net 3.5
Partager