Подтвердить что ты не робот

Поиск элемента в списке <> с использованием С#

У меня есть список, который содержит коллекцию объектов.

Как я могу найти элемент в этом списке, где object.Property == myValue?

4b9b3361

Ответ 1

Что случилось с List.Find??

Я думаю, нам нужна дополнительная информация о том, что вы сделали, и почему это не удается, прежде чем мы сможем предоставить действительно полезные ответы.

Ответ 2

У вас есть несколько вариантов:

  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) для сопоставлений идентичности, которые обычно являются самыми быстрыми

Ответ 3

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

Ответ 4

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

Ответ 5

Для .NET 2.0:

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