LINQ for ... QueryObjectGraph(Expression <func <t,bool =“”>&gt; filter,params string [] children)</func <t,>

时间:2011-11-26 01:37:53

标签: linq entity-framework

在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);

0 个答案:

没有答案