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

时间:2011-02-08 18:53:10

标签: c# list contains

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的元素是否包含特定值。更确切地说,我想检查是否存在pricePublicModel.Size == 200?另外,如果这个元素存在,如何知道它是哪一个?

EDIT如果Dictionary更适合这个,那么我可以使用Dictionary,但我需要知道如何:)

7 个答案:

答案 0 :(得分:172)

如果您有一个列表,并且想知道列表中存在哪个符合给定条件的元素,则可以使用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
}

答案 1 :(得分:111)

bool contains = pricePublicList.Any(p => p.Size == 200);

答案 2 :(得分:23)

您可以使用exists

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

答案 3 :(得分:13)

使用LINQ非常容易:

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

答案 4 :(得分:9)

您实际上并不需要LINQ,因为List<T>提供的方法完全符合您的要求:Find

  

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

示例代码:

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

答案 5 :(得分:3)

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
}

答案 6 :(得分:0)

您也可以只使用 List.Find()

if(pricePublicList.Find(item => item.Size == 200) != null)
{
    // Item exists, do something
}
else
{
    // Item does not exist, do something else
}