Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données
Accès aux données Forum d'entraide sur les technologies d'accès aux données de Microsoft (ADO.NET, Linq, Entity Framework, etc.).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 20h06   #1
niko59480
Invité de passage
 
Homme
Inscription : septembre 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2012
Messages : 6
Points : 0
Points : 0
Par défaut problème de Contains dans une clause where

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 :
Code :
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))
                                );
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 :
Citation:
{"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."}
J'ai essayé sans passer mes List en Queryable mais cela ne change pas le problème...

Merci d'avance.

PS : Framework .Net 3.5
niko59480 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 14h02   #2
niko59480
Invité de passage
 
Homme
Inscription : septembre 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2012
Messages : 6
Points : 0
Points : 0
up!
niko59480 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web