Я преобразовал запрос, чтобы использовать LINQ вместо методов Lambda. Мне легче читать запросы, когда они написаны в синтаксисе LINQ.
Как db.Location
относится к pg.ListSelectedGrpDescID.Count == 0
? Что должно db.Location
вернуть, если оно равно 0? Я оставил эту часть запроса на данный момент.
Может быть хорошей идеей разбить проблему на шаги при попытке найти решение. Это первый шаг к решению.
Во-первых, мы можем преобразовать идентификаторы ListGrpHolder в другой оператор. Это вернет только значение int и облегчит чтение запроса ListLocation.
var SelectedIds = ListGrpHolder.Select(pg => pg.ListSelectedGrpDescID).SelectMany(i => i);
var ListLocation = (from loc in db.Locations
from grp in loc.GroupLocations
where SelectedIds.Contains(grp.GrpDescID)
select loc).ToList();
Если мы не можем упростить или изменить запрос, чтобы получить необходимые вам результаты, мы можем рассмотреть использование дерева выражений.