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

I have a list which contains a collection of objects.

How can I search for an item in this list where object.Property == myValue?

This question is related to c# .net

The answer is


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

You have a few options:

  1. Using Enumerable.Where:

    list.Where(i => i.Property == value).FirstOrDefault();       // C# 3.0+
    
  2. Using List.Find:

    list.Find(i => i.Property == value);                         // C# 3.0+
    list.Find(delegate(Item i) { return i.Property == value; }); // C# 2.0+
    

Both of these options return default(T) (null for reference types) if no match is found.

As mentioned in the comments below, you should use the appropriate form of comparison for your scenario:

  • == for simple value types or where use of operator overloads are desired
  • object.Equals(a,b) for most scenarios where the type is unknown or comparison has potentially been overridden
  • string.Equals(a,b,StringComparison) for comparing strings
  • object.ReferenceEquals(a,b) for identity comparisons, which are usually the fastest

For .NET 2.0:

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

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