В DAL:
public IQueryable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, params string[] children)
{
foreach (var child in children)
{
dbset.Include(child);
}
return dbset.Where(filter);
}
В BLL:
public IQueryable<Breed_Translated> QueryObjectGraph(System.Linq.Expressions.Expression<Func<Breed_Translated, bool>> filter, params string[] children)
{
return _r.QueryObjectGraph(filter, children);
}
В контроллере:
var breeds = _breedTranslatedRepository.QueryObjectGraph(b => b.Culture == culture, new string[] {"Breed", "AnimalType_Breed" }).ToList();
ВОПРОС: Я могу вернуть все breed_translateds, но не могу понять, как фильтровать по AnimalTypeId?
Я могу сделать это в DAL следующим образом с синтаксисом понимания:
var queryTest=from bt in Breed_Translateds
join atb in AnimalType_Breeds
on bt.BreedId equals atb.BreedId
where bt.Culture=="en" && atb.AnimalTypeId ==2
Но хотелось бы стать лучше в LINQ с синтаксисом метода расширения: что-то вроде ...
var breeds = _breedTranslatedRepository.QueryObjectGraph (b => b.Culture == культура, новая строка [] {"Breed", "AnimalType_Breed"}). ToList () .Where (at => at.AnimalTypeId == 3 )