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 pour trouver les objets dont la valeur d'une propriété est dans une liste


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut linq pour trouver les objets dont la valeur d'une propriété est dans une liste
    Bonjour,

    Je suis surpris de ne pas trouver ce que je recherche. J'imagine que j'ai dû utiliser les mauvaises clés de recherches tant ce que je cherche me semble basique.
    Si c'est le cas, merci de me donner les liens ou les clés de recherche pour trouver ce que je cherche.
    Mais qu'est-ce que je cherche ?
    Soit une liste d'objets de types différents, mais ayant certains attributs communs, comme par exemple l'attribut Layer.
    Soit une liste de string déterminant des layers. Appelons la liste "couches" pour bien faire la différence : Par exemple List<string>lstCouches = new List<string>(newstring[]{"OFF_SEG_LOT","OFF_SEG_TNC","OFF_SEG_CF"})
    Je dois extraire de la liste d'objets les lignes ou arcs (typeof(Ligne) ou de typeof(Arc)) dont le Layer est dans la liste couches.
    En Foreach avec des itérations de comparaison sur les éléments de la liste couches, j'y arrive bien, mais je me dis qu'il doit y avoir moyen de le faire en linq et que le résultat serait bien plus rapide en linq.
    Mais comment dois-je m'y prendre ?

    je pense à qqch du genre var objets = lstObjets.Where(x => (x.GetType() == typeof(Ligne) || x.GetType() == typeof(Arc)) && x.Layer == ??);
    Mais par quoi faut-il remplacer ?? pour sélectionner les éléments de la liste lstCouches ?

    Merci de vos z'avis z'avisés.
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    Je pense avoir trouvé ce que je chercherais.

    Il me semble que la requête suivante devrait faire l'affaire
    Je la publie pour ceux qui chercheraient la même chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var lignesEtArcs = lstObjets.AsQueryable<Element>().Where(x => (x.GetType() == typeof(Arc) || x.GetType() == typeof(Ligne)) && lstCouches.Contains(x.Layer));
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer les lignes dont la valeur du deuxième champ est égale à 13
    Par mond14 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/05/2013, 13h26
  2. Réponses: 1
    Dernier message: 11/06/2008, 13h33
  3. Réponses: 4
    Dernier message: 17/12/2007, 14h46
  4. Réponses: 4
    Dernier message: 17/12/2007, 14h46
  5. Réponses: 1
    Dernier message: 31/07/2006, 13h54

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