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