Список запросов Linq содержит список
У меня есть класс 2:
public class ObjectA
{
public int Id;
public string Name;
}
public class ObjectB
{
public int Id;
public string Name;
public List<ObjectA> ListOfObjectA;
}
Итак, у меня есть два списка: один из ObjectB (ListObjectB) и другой содержит список id объекта ObjectA (называемый ListOfIdsA).
Если это, я хочу получить список ObjectB, где ObjectB.ListOfObjectA находится в ListOfIdsA.
Мой первый (и неправильный) подход был
ListObjectB.Where(p=> ListOfIdsA.Contains(p.ListOfObjectA.Select(b=>b.Id)))
Но это явно исключает. Я google это, stackoverflowed, но я думаю, что мои навыки поиска не так хорошо в этом, может кто-нибудь дать ниндзя awser этого?
(Предпочтительно в выражении лямбда)
Ответы
Ответ 1
Вы пытаетесь получить список ObjectB, где все ObjectAs находятся в ListOfIdsA или любом из них?
Думаю, вы тоже хотите:
ListObjectB.Where(p => p.ListOfObjectA.Any(x => ListOfIdsA.Contains(x.Id)))
или
ListObjectB.Where(p => p.ListOfObjectA.All(x => ListOfIdsA.Contains(x.Id)))
(Возможно, вы захотите сделать ListOfIdsA
a HashSet<string>
, если он имеет значительный размер, кстати.)