繁体   English   中英

如何检查具有特定属性的对象的List集合?

[英]How can I check a List collection for an object that has a particular property?

我有一个List<IAgStkObject> 每个IAgStkObject都有一个名为InstanceName的属性。 如何搜索我的列表以查找是否有任何包含的IAgStkObject具有特定的InstanceName? 在过去我会使用foreach循环..但这似乎太慢了。

WulfgarPro

如果您唯一拥有的是List(不是由InstanceName排序),则没有更快的方法(如果经常进行类似的测试,您可以预处理数据并创建例如由InstanceName索引的Dictionary)。

与“过去”不同的唯一方法是那些有用的扩展方法,允许你只写

return myList.Any(item => item.InstanceName == "Searched name");

如果列表按InstanceName排序,则可以使用二进制搜索算法,否则:否。

您必须使用一些更高级的数据结构(如排序列表或字典)。 我认为字典可以解决这个问题。 它非常快速且易于使用。

但想想: 你有多少物品 确定循环它们是性能问题吗? 如果你有<1000个对象,你绝对不必担心(除非你想要实时做某事)。

你可以使用Linq

list.Any(o => o.InstanceName == "something")

但是你无法避免在列表中循环(在Linq案例中它是隐式完成的)。 如果您希望获得性能提升,请更改数据结构。 也许字典(InstanceName - > IAgStkObject )是合适的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM