C# 使用LINQ时无法将对象异常强制转换为具有LINQKit的实体

C# 使用LINQ时无法将对象异常强制转换为具有LINQKit的实体,c#,linq,entity-framework,linq-to-entities,linqkit,C#,Linq,Entity Framework,Linq To Entities,Linqkit,我正在使用将LINQ扩展到实体功能: 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 &

我正在使用将LINQ扩展到实体功能:

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));
}
public Boolean已匹配(Int32年龄)
{
返回年龄>18岁;
}
公共IQueryable GetAllMatchedUsers(函数已匹配)
{
返回qry=_Context.Users.AsExpandable(),其中(x=>x.IsActive&&isMatched(x.Age));
}
此代码用于实体框架ORM对象(“上下文为DbContext,用户为DBSet

此代码引发以下异常

无法强制转换类型为的对象 输入'System.Linq.Expressions.FieldExpression' 'System.Linq.Expressions.LambdaExpression'

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

当然,p.S.是高度简化的实现


请帮帮我。

使用LinqKit,您必须通过
表达式匹配

Func
是已经编译到C#运行时的东西


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

您的代码中是否也缺少一个参数名,或者它就在这里?就在这里:)我已经更正了我的代码示例。添加了一些关于什么是上下文和用户的更多信息。为什么要使用该
作为可扩展的
?这对我来说似乎是多余的。为什么
Where
子句不够?一个可扩展的是LINQKit扩展方法。如果没有它,将引发另一个异常,它告诉我LINQtoEntities不支持调用。我希望使用可扩展性来解决这个问题(就我所了解的LINQKit文档而言)——但我失败了,并在这里描述了我的代码。。。