在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 =&gt; b.Culture == culture,new string [] {“Breed”,“AnimalType_Breed”})。ToList() .Where(at =&gt; at.AnimalTypeId = = 3);