Подтвердить что ты не робот

Список запросов 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 этого? (Предпочтительно в выражении лямбда)

4b9b3361

Ответ 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>, если он имеет значительный размер, кстати.)