繁体   English   中英

使用 C# 在 List<> 中查找项目

[英]Finding an item in a List<> using C#

我有一个包含对象集合的列表。

如何在此列表中搜索object.Property == myValue的项目?

您有几个选择:

  1. 使用Enumerable.Where

     list.Where(i => i.Property == value).FirstOrDefault(); // C# 3.0+
  2. 使用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.

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