C#-检查列表是否包含属性等于值的对象?

C#-检查列表是否包含属性等于值的对象?,c#,reflection,C#,Reflection,有没有不涉及循环的速记方法 public enum Item { Wood, Stone, Handle, Flint, StoneTool, Pallet, Bench } public struct ItemCount { public Item Item; public int Count; } private List<ItemCount> _contents; 您可以使用Linq扩展方法Any来实现这一点 if(_contents.Any(i=>

有没有不涉及循环的速记方法

public enum Item { Wood, Stone, Handle, Flint, StoneTool, Pallet, Bench  }

public struct ItemCount
{
    public Item Item;
    public int Count;
}

private List<ItemCount> _contents;

您可以使用
Linq
扩展方法
Any
来实现这一点

if(_contents.Any(i=> i.Item == Item.Wood))
{
    // logic   
}
如果您需要匹配的对象,请执行此操作

var firstMatch = _contents.FirstOrDefault(i=> i.Item == Item.Wood);

if(firstMatch != null)
{
    // logic   
    // Access firstMatch  
}

您不需要反射,只需使用Linq:

if (_contents.Any(i=>i.Item == Item.Wood))
{
    //do stuff
}
如果需要具有该值的对象,可以使用
Where

var woodItems = _contents.Where(i=>i.Item == Item.Wood);

我本来打算回答的,但下面两个人值得投票。Any是正确的解决方案。你真的需要元素吗?或者你只是在查找它是否存在?我想把它添加到列表中。因此,如果它不在那里,它将添加它;如果存在,那么它将增加结构的int属性。
var woodItems = _contents.Where(i=>i.Item == Item.Wood);