C# LINQ ускорить проверку листа внутри листа
У меня есть 2 модели House/Owner и связь Многие ко многим (отдельная модель получается) HouseToOwner.
В HouseToOwner условно прописываются только Idшники дома и владельца (чтоб у дома было неск владельцев, а у владельца — неск домов).
Написал linq на поиск тех домов, которые есть у владельца:
houses = houses.Where(x => x.HouseToOwner.Any(y => y.Owner.FIO.StartsWith("Вася"))).ToList();
Он срабатывает, но довольно долго (около 3-6сек. В бд примерно 300 домов и столько же владельцев +-).
Можно ли как то оптимизировать Linq запрос?
Ответы (1 шт):
Автор решения: Nikita Plesovskikh
→ Ссылка
Попробуйте использовать JOIN вместо IN:
var foundHouses =
(from house in houses
join houseToOwner in houseToOwners on house equals houseToOwner.House
join owner in owners on houseToOwner.Owner equals owner
where owner.Name.StartsWith(searchString)
select house).ToList();