Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 将func作为Linq中的参数传递给实体和';内部.NET Framework数据提供程序错误1025';错误_Entity Framework_Linq To Entities_Lambda - Fatal编程技术网

Entity framework 将func作为Linq中的参数传递给实体和';内部.NET Framework数据提供程序错误1025';错误

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

我们有一个叫做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.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));