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