C# 谓词生成器和n+;1查询

C# 谓词生成器和n+;1查询,c#,linq,entity-framework,asp.net-mvc-4,predicatebuilder,C#,Linq,Entity Framework,Asp.net Mvc 4,Predicatebuilder,我使用PredicateBuilder将动态表达式传递给存储库中的方法,该方法在Where子句中使用它。以下是相关的存储库代码: var results = context.Set<T>().AsExpandable.Where(where); foreach (var includeProperty in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEm

我使用
PredicateBuilder
将动态表达式传递给存储库中的方法,该方法在
Where
子句中使用它。以下是相关的存储库代码:

        var results = context.Set<T>().AsExpandable.Where(where);


        foreach (var includeProperty in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            results = results.Include(includeProperty);
        }
        return results.ToList();
var results=context.Set().AsExpandable.Where(Where);
foreach(includeProperty.Split中的var includeProperty(新字符[]{',},StringSplitOptions.RemoveEmptyEntries))
{
结果=结果。包括(包括属性);
}
返回结果。ToList();
在我的控制器中,我有:

var predicate = PredicateBuilder.True<Account>();
if (amount> 0)
    predicate = predicate.And(d => d.Amount <= amount);


var model = AccountRepository.Get(predicate, "Owner").ToList();
return PartialView(model);
var predicate=PredicateBuilder.True();
如果(金额>0)

predicate=predicate.和(d=>d.Amount在可扩展项之前包含,如下所示:

var results = context.Set<T>()

foreach (var includeProperty in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
    results = results.Include(includeProperty);
}

return results.AsExpandable.Where(where).ToList();
var results=context.Set()
foreach(includeProperty.Split中的var includeProperty(新字符[]{',},StringSplitOptions.RemoveEmptyEntries))
{
结果=结果。包括(包括属性);
}
返回results.AsExpandable.Where(Where.ToList();

似乎所有者属性是延迟加载的。你能用Accound代码更新你的问题吗?很多情况下,唯一需要更改的是context.Set()返回DbQuery,而我无法调用它。Include,我最后将var results=context.Set().Where(Where);然后返回results.AsExpandable().ToList();