140 votes

comment vérifier si List <T> élément contient un élément avec une valeur de propriété particulière

 public class PricePublicModel
{
    public PricePublicModel() { }

    public int PriceGroupID { get; set; }
    public double Size { get; set; }
    public double Size2 { get; set; }
    public int[] PrintType { get; set; }
    public double[] Price { get; set; }
}

List<PricePublicModel> pricePublicList = new List<PricePublicModel>();
 

Comment vérifier si un élément de pricePublicList contient une certaine valeur. Pour être plus précis, je veux vérifier s’il existe pricePublicModel.Size == 200 ? De plus, si cet élément existe, comment savoir de quoi il s'agit?

EDIT Si Dictionary convient mieux à cela, je pourrais utiliser Dictionary, mais j’aurais besoin de savoir comment faire :)

222voto

Anthony Pegram Points 58528

Si vous avez une liste et que vous voulez savoir où se trouve un élément correspondant à un critère donné, vous pouvez utiliser la méthode d'instance FindIndex . Tel que

 int index = list.FindIndex(f => f.Bar == 17);
 

f => f.Bar == 17 est un prédicat avec les critères de correspondance.

Dans votre cas, vous pourriez écrire

 int index = pricePublicList.FindIndex(item => item.Size == 200);
if (index >= 0) 
{
    // element exists, do what you need
}
 

166voto

Daniel A. White Points 91889
bool contains = pricePublicList.Any(p => p.Size == 200);

50voto

Tiago Points 1110

Vous pouvez utiliser le existe

 if (pricePublicList.Exists(x => x.Size == 200))
{
   //code
}
 

17voto

Jacob Points 33729

C'est assez facile à faire avec LINQ:

 var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
    // Element doesn't exist
}
 

14voto

Mark Byers Points 318575

Vous n'avez pas réellement besoin de LINQ pour cela car List<T> fournit une méthode qui fait exactement ce que vous voulez: Find .

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et renvoie la première occurrence dans l'ensemble des List<T> .

Exemple de code:

 PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X