.net 使用C#在List〈>中查找项目

ux6nzvsh  于 2023-05-02  发布在  .NET
关注(0)|答案(6)|浏览(121)

我有一个包含对象集合的列表。
如何在此列表中搜索object.Property == myValue的项目?

41ik7eoe

41ik7eoe1#

你有几个选择:
1.使用Enumerable.WhereEnumerable.FirstOrDefault

list.Where(i => i.Property == value).FirstOrDefault();       // C# 3.0+

1.使用Enumerable.FirstOrDefault本身:

list.FirstOrDefault(i => i.Property == value);               // C# 3.0+

1.使用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)用于身份比较,这通常是最快的
83qze16e

83qze16e2#

List.Find有什么问题??
我认为我们需要更多的信息,你做了什么,为什么它失败了,在我们可以提供真正有用的答案。

nxowjjhe

nxowjjhe3#

var myItem = myList.Find(item => item.property == "something");
vktxenjb

vktxenjb4#

item = objects.Find(obj => obj.property==myValue);
1l5u6lss

1l5u6lss5#

list.FirstOrDefault(i => i.property == someValue);

这是基于德鲁的回答上面,但更简洁一点。

h7appiyu

h7appiyu6#

对于.NET 2.0:

list.Find(delegate(Item i) { return i.Property == someValue; });

相关问题