Поиск объекта в IList или IQueryable

Мне нужно найти совпадение элемента в списке IQueryable. У меня есть следующий список:

IQueryable<EventItem> eventItems = new Queryable<EventItem>();
EventItem eventItem1 = new EventItem("Event 1");
EventItem eventItem2 = new EventItem("Event 2");
eventItems.Add(eventItem1);
eventItems.Add(eventItem2);

Теперь я хочу найти событие в списке, передав EventItem, например eventItem2. Как найти и вернуть элемент, например EventItem found = eventItems.Select(eventItem2);

Ваше здоровье,

S


person Community    schedule 26.06.2009    source источник


Ответы (2)


Linq предоставляет метод .Where, который позволяет передать лямбда-выражение для оценки искомого элемента.

EventItem found = eventItems.Where(e => e == eventItem2).SingleOrDefault();

найдено может быть нулевым, поэтому вам просто нужно проверить это, чтобы увидеть, было ли оно найдено в запрашиваемом/списке

person Joel Martinez    schedule 26.06.2009
comment
ты только что понял ответ до того, как я его исправил ;-) - person Joel Martinez; 26.06.2009
comment
Спасибо, Джоэл, всегда просто, когда видишь это. - person ; 26.06.2009

с помощью LINQ вы можете сделать:

EventItem found = eventItems.SingleOrDefault(item => item.Name == "Event 2");

Предполагая, что имя для EventItem отображается через свойство Name.

В части item => [code] вы предоставляете метод, который возвращает true/false, чтобы решить, совпадают ли элементы или нет.

person Nader Shirazie    schedule 26.06.2009
comment
Позор, это не было принято, это было первым, более лаконичным/читабельным, более эффективным и правильно написанным с первой попытки! - person Daniel Earwicker; 27.06.2009
comment
Ваше здоровье! Пока люди видят ответ, все хорошо. - person Nader Shirazie; 27.06.2009