0

我正在使用LINQKit来扩展 LINQ To Entities 功能:

public Boolean IsMatched(Int32 age)
{
    return age > 18;
}

public IQueryable<Users> GetAllMatchedUsers(Func<Int32, Boolean> isMatched)
{
    return qry = _Context.Users.AsExpandable().Where(x => x.IsActive && isMatched(x.Age));
}

此代码用于实体框架 ORM对象(_Context 是DbContext,Users - 是DBSet

此代码引发以下异常

无法将“System.Linq.Expressions.FieldExpression”类型的对象转换为“System.Linq.Expressions.LambdaExpression”类型

摆脱Func并将IsMatched硬编码为GetAllMatchedUsers解决了这个问题。但我需要使用Func将不同的选择标准从业务逻辑层传递到我的数据访问层

PS IsMatched是高度简化的实现,例如当然

请帮帮我。

4

1 回答 1

1

使用 LinqKit,您必须通过Expression<Func<Int32, Boolean>> isMatched

Func<...>是已经编译到 C# 运行时的东西。

Expression<Func<...>>是可以作为表达式树传输到 SQL 的东西。

于 2016-09-04T21:08:33.047 回答