Filtre linq liste sur la valeur de la propriété
J'ai un List<int>
et un List<customObject>
. Le customObject classe a un ID de propriété. Comment puis-je obtenir un List<customObject>
contenant uniquement les objets où la propriété ID est dans la List<int>
à l'aide de LINQ?
Modifier: j'ai accepté Konrads réponse parce que c'est plus facile/plus intuitif à lire.
OriginalL'auteur Espo | 2008-09-01
Vous devez vous connecter pour publier un commentaire.
.Where
méthode plus succinct? (voir ma réponse ci-dessous)Eh bien, ils sont complètement équivalents, la mine utilise simplement la syntaxe d'expression de requête. Le mien est potentiellement plus lisible – mais j'avoue que (au moins dans la plupart des cas), j'aurais effectivement aller avec votre variante puisque, comme vous l'avez dit, il est plus concis.
Ils sont techniquement équivalent, mais je trouve la
.Where()
méthode bien plus facile à lire. Mais bien sûr, c'est juste mon avis.Moi aussi, j'aime @RobinWinslow. Je upvoted votre réponse.
OriginalL'auteur Konrad Rudolph
J'ai eu le même problème tout à l'heure et utilisé ci-dessous la solution. Si vous avez déjà la liste des objets que vous pouvez supprimer tous ne figurent pas dans la liste int, en laissant un peu de matches dans les objList.
OriginalL'auteur Henryk
OriginalL'auteur Robin Winslow
Pas testé, mais ça va être quelque chose comme ceci:
@Konrad juste testé, et ça fonctionne - j'ai juste eu une faute de frappe où j'avais écrit "j'.ID" plutôt que "je".
OriginalL'auteur Matt Hamilton
Juste pour être complet (et c'est peut-être plus facile à lire?), à l'aide d'un "où" semblable à Matt "joindre":
OriginalL'auteur Lucas
Veuillez noter que l'utilisation de la rejoindre au lieu de les contient NE fonctionne PAS lorsque le nombre d'éléments dans la liste dépasse 49! Vous recevrez le message d'erreur:
Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
OriginalL'auteur Diana