[英]Finding an item in a List<> using C#
我有一个包含对象集合的列表。
如何在此列表中搜索object.Property == myValue
的项目?
您有几个选择:
使用Enumerable.Where :
list.Where(i => i.Property == value).FirstOrDefault(); // C# 3.0+
使用List.Find :
list.Find(i => i.Property == value); // C# 3.0+ list.Find(delegate(Item i) { return i.Property == value; }); // C# 2.0+
如果未找到匹配项,这两个选项都返回default(T)
(引用类型为null
)。
正如下面的评论中提到的,您应该为您的场景使用适当的比较形式:
==
用于简单值类型或需要使用运算符重载的地方object.Equals(a,b)
适用于类型未知或比较可能已被覆盖的大多数情况string.Equals(a,b,StringComparison)
用于比较字符串object.ReferenceEquals(a,b)
用于身份比较,这通常是最快的List.Find 有什么问题?
我认为在我们提供真正有用的答案之前,我们需要更多关于您所做的事情以及失败原因的信息。
var myItem = myList.Find(item => item.property == "something");
item = objects.Find(obj => obj.property==myValue);
对于 .NET 2.0:
list.Find(delegate(Item i) { return i.Property == someValue; });
list.FirstOrDefault(i => i.property == someValue);
这是基于 Drew 上面的回答,但更简洁一些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.