Entity framework 将func作为Linq中的参数传递给实体和';内部.NET Framework数据提供程序错误1025';错误
我们有一个叫做Task的类:Entity framework 将func作为Linq中的参数传递给实体和';内部.NET Framework数据提供程序错误1025';错误,entity-framework,linq-to-entities,lambda,Entity Framework,Linq To Entities,Lambda,我们有一个叫做Task的类: public partial class Task : EntityObject { public EntityCollection<TaskUser> TaskUsers { get {...} set{...} } } 每个TaskUser对象都有一个User对象 我们得到了IQueryable任务。我们要查找分配给ID为1的用户的任务。当我们使用 tasks.Where(t => t.TaskUsers.Any(a => a
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
每个TaskUser对象都有一个User对象
我们得到了IQueryable任务
。我们要查找分配给ID为1的用户的任务。当我们使用
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
一切正常。当我们使用
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
不起作用,但是
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
Expression=a=>a.User.ID==1;
返回tasks.Where(t=>t.TaskUsers.AsQueryable().Any(表达式));
工作!这就是我所需要的。嗯,EF只能翻译表达式,不能翻译函数 i、 e.它可以翻译为:
Expression<Func<TaskUser,bool>>
表达式
但不是这个:
Func<TaskUser,bool>
Func
关于如何合并表达式(在伪代码中):
Expression=a=>a.User.ID==1;
返回tasks.Where(t=>t.TaskUsers.Any(表达式));
也许有一些表达大师能帮上忙
我建议针对这一特定问题提出一个后续问题
Alex没有guru的帮助:返回任务。其中(t=>t.TaskUsers.AsQueryable().Any(表达式));嘿,在找到你的解决方案之前,我刚刚在a上发布了悬赏。想去拿赏金吗?事实上,像你一样尝试使用
Expression
而不是Func
,我的没有用。还有其他想法吗?
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(expression));