通用存储库 - 表达式数组<func <t,tproperty =“”>&gt;错误

时间:2015-05-04 04:50:48

标签: c# entity-framework generics

我在Entity Framework Generic Repository包装器中有一个通用的Include方法。

public IQueryable<T> Include<T, TProperty>(IQueryable<T> queryable, Expression<Func<T, TProperty>> property)
    {
        return queryable.Include(property);
    }

它很好用,但它只适用于一个包含。

var result = this.Context.RP.Include(query, r => r.Country);

我想要一个方法,我有一个表达式列表,以便可以给出多个包含。

 var result = this.Context.RP.Includes(query, r => r.Country, r => r.Country.Provinces, r=> r.Country.Languages);

我创建了以下方法和类似方法,但是要么得到错误“无法将lambda表达式转换为类型,因为它不是委托类型”或“方法的类型参数不能从用法中推断出来。请尝试指定类型明确的论点。“

public IQueryable<T> Includes<T>(IQueryable<T> queryable, Expression<Func<T, Object>>[] predicates)
    {
         foreach (var predicate in predicates)
             queryable.Include(predicate);

        return queryable;
    }

在这里有多个正确的方法可以将多个Lambda表达式作为参数吗?

1 个答案:

答案 0 :(得分:1)

我会使用table_for PaperTrail::Version.order('id desc').limit(5) do // some code for what to do end 关键字将参数标记为大小可变的数组。

另外,我会在每次迭代时重新分配params

queryable