Mazin78 Ответов: 2

Как проверить элемент в списке списка?


Привет,
Я новичок в LINQ, вот мой вопрос:
У меня есть список класса, элемент, который присутствует только в одном списке (ItemID), и список списка. Я знаю, как проверить, существует ли ItemID в списке, но я не знаю, как проверить, существует ли он в списке списка. Вот мой код, чтобы проверить, существует ли элемент в списке:

List<MyClass> list = new List<MyClass>;
List<List<MyClass>> Lists= new List<List<MyClass>>();
If (List.Exists(x => x.ItemID == itemIndicator.ItemID))


Пожалуйста, я хотел бы, чтобы проверить идентификатор элемента в список, а не список.

Что я уже пробовал:

Я пытался:

If (Lists.Exists(x => x.ItemID == itemIndicator.ItemID))


Но он показывает ошибку, потому что ItemID принадлежит списку, а не списку списка.

2 Ответов

Рейтинг:
17

OriginalGriff

Попробуй:

If (Lists.Exists(x => x.Exists(y => y.ItemID == itemIndicator.ItemID)))


Рейтинг:
0

Pushkar Prabhu

<pre>if(lists.SelectMany(x => x).ToList().Exists(y => y.ItemID == itemIndicator.ItemID))


Clifford Nelson

Почему у вас есть Толист(). В этом не должно быть необходимости.

Pushkar Prabhu

SelectMany<t> возвращает IEnumerable<t>. Мы не можем использовать Exists на IEnumerable<t>. Он доступен только в списке<t>. Поэтому я использовал ToList<t> для преобразования IEnumrable<t> в List<t>.

Richard Deeming

Это было бы гораздо эффективнее использовать Any:

lists.SelectMany(x => x).Any(y => y.ItemID == itemIndicator.ItemID)

Или альтернативу, которую Грифф опубликовал в решении 1.

Pushkar Prabhu

любой должен использоваться вместо Exists.
Существует строительство на список<Т> где, как какие-либо работы на интерфейс IEnumerable&ЛТ;Т>.