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 l'é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 :)
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);
Où 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
}
bool contains = pricePublicList.Any(p => p.Size == 200);
Vous pouvez utiliser le existe
if (pricePublicList.Exists(x => x.Size == 200))
{
//code
}
C'est assez facile à faire avec LINQ:
var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
// Element doesn't exist
}
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 de
List<T>
.
Exemple de code:
PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
var item = pricePublicList.FirstOrDefault(x => x.Size == 200);
if (item != null) {
// There exists one with size 200 and is stored in item now
}
else {
// There is no PricePublicModel with size 200
}