Я пытаюсь вернуть земли IQueryable, отфильтрованные по свойству дочернего объекта Owner.Name.Хорошо работает с решением стилей запросов, но я хочу использовать лямбда-решение.
Вкратце это мои классы, сопоставленные EntityFramework:
public class Land
{
public int Id { get; set; }
public virtual ICollection<Owner> Owners { get; set; }
}
public class Owner
{
public int Id { get; set; }
public string Name { get; set; }
public int LandId { get; set; }
public virtual Land Lands { get; set; }
}
Запрос, который работает нормально:
var list = from land in db.Lands
join owner in db.Owners on land.Id equals Owner.LandId
where owner.Name.Contains("Smit")
select land;
Я пытался использовать это:
var list = db.Lands.Where(lnd => lnd.Owners.Count() > 0 &&
lnd.Owners.Where(own => own.Name.Contains("Smit")).Count() > 0);
Это работает только для небольших списков, но для некоторых с тысячами записей это дает время ожидания.