如何检查List <T>元素是否包含具有特定属性值的项目

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>(); 

如何检查pricePublicList元素pricePublicList包含一定的值。 更确切地说,我想检查是否存在pricePublicModel.Size == 200 ? 另外,如果这个元素存在,怎么知道它是哪一个呢?

编辑如果字典更适合这个,那么我可以使用字典,但我需要知道如何:)

如果您有一个列表,并且您想知道列表中的某个元素与给定条件匹配,您可以使用FindIndex实例方法。 如

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

其中f => f.Bar == 17是具有匹配标准的谓词。

在你的情况下,你可能会写

 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); 

你可以使用存在

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

使用LINQ这很容易:

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

你实际上并不需要LINQ,因为List<T>提供了一个完全符合你想要的方法: Find

search与指定的谓词所定义的条件相匹配的元素,并返回整个List<T>的第一个匹配项。

示例代码:

 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 }