Ответ 1
Что случилось с List.Find??
Я думаю, нам нужна дополнительная информация о том, что вы сделали, и почему это не удается, прежде чем мы сможем предоставить действительно полезные ответы.
У меня есть список, который содержит коллекцию объектов.
Как я могу найти элемент в этом списке, где object.Property == myValue
?
Что случилось с List.Find??
Я думаю, нам нужна дополнительная информация о том, что вы сделали, и почему это не удается, прежде чем мы сможем предоставить действительно полезные ответы.
У вас есть несколько вариантов:
Использование 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)
для сопоставлений идентичности, которые обычно являются самыми быстрыми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; });