IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Linq to SQL : WHERE ID in liste


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Linq to SQL : WHERE ID in liste
    Bonjour à tous !!!

    J'ai un petit problème (Oui, sinon je ne posterai pas ici )
    Je fais une requête Linq To SQL pour récupérer une liste d'appel.
    En fonction des tri que je veux effectuer à cette liste, je fais des WHERE en plus.
    Mais je veux faire un WHERE id == [TOUT LES ELEMENTS D'UNE LISTE].
    De façon statique, voilà à quoi ressemblerai ce que je voudrai faire:

    SELECT ...
    FROM ...
    WHERE [CONDITIONS]
    AND (id == 1 OR id ==2 OR id==3 OR ...)


    Voilà ce que j'ai :


    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
     
         var q = from p in DbContext.Appels
         where (p.Client.Nom.Contains(Filter) || p.AppelId.ToString().Contains(Filter) || (p.Materiel.Modele1.Nom + " #" + p.Materiel.NumeroSerie).Contains(Filter) || p.ContactClient.Nom.Contains(Filter) || p.ContactClient.Prenom.Contains(Filter) || p.Dossier.Contains(Filter) || p.Client.CodePostal.Contains(Filter) || p.Client.Ville.Contains(Filter) || p.NumDevis.Contains(Filter))
         select p;
     
     
                if (StatutAppel.HasValue)
                    q = q.Where(p => p.StatutAppelId == StatutAppel.Value);
     
                if (StatutFacturation.HasValue)
                    q = q.Where(p => p.Facturable == StatutFacturation.Value);
     
                if(statutDemande.HasValue)
                    q = q.Where(p => p.StatutDemandePiece == statutDemande.Value);
     
                if (statutPro.HasValue)
                    q = q.Where(p => p.Depot == statutPro.Value);
             //LIGNE QUI POSE PROBLEME 
             //La ligne qui suit compare les ID étant dans la colonne ClientId à la liste d'id renvoyée par la fonction
             //Il y a une erreur mais c'est le plus parlant pour vous
                if (!statutRegion.Equals(""))
                    q = q.Where(p => p.ClientId in GetAllClientIdByRegionLPS(statutRegion)); // GetAllClientIdByRegionLPS(statutRegion) renvoie une liste
     
    // RESTE DU CODE ...

    Auriez-vous une solution à me proposer ?

    Merci d'avance !!

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IList<int> listClientId = GetAllClientIdByRegionLPS(statutRegion);
              if (!statutRegion.Equals(""))
                    q = q.Where(p => listClientId.Contains((int)p.ClientId));

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    En faite non :

    Exception : La méthode 'Boolean Contains(Int32)' ne prend pas en charge la traduction en SQL.

Discussions similaires

  1. [Débutant] Question linq to SQL + datagrid + List
    Par androidFan2206 dans le forum C#
    Réponses: 3
    Dernier message: 05/06/2013, 16h39
  2. Trier une liste avec LINQ to SQL
    Par anthride dans le forum Linq
    Réponses: 2
    Dernier message: 12/02/2010, 10h40
  3. [Linq to SQL] Clause Where dynamique
    Par Kamishu dans le forum Accès aux données
    Réponses: 2
    Dernier message: 14/08/2008, 14h17
  4. [LINQ To SQL] Clauses WHERE dynamiques
    Par SaumonAgile dans le forum Accès aux données
    Réponses: 7
    Dernier message: 23/02/2008, 01h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo