Passando func como parâmetro no erro Linq to Entities e 'Erro interno do .NET Framework Data Provider 1025'
Nós temos uma classe chamada Task:
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
Tem uma propriedade de navegação chamada TaskUsers, que contém usuários anexados a este taks:
public partial class TaskUser : EntityObject
{
public User User { get {...} set { } }
}
Todo objeto TaskUser possui objeto User.
Nos é dadoIQueryable<Task> tasks
. Queremos encontrar tarefas atribuídas ao usuário com ID = 1. Quando usamos
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
tudo funciona bem. Quando nós usamos
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
nós ficamos bem'Internal .NET Framework Data Provider error 1025'
erro. Por quê? Eu quero construir filtros muito mais complicados usandoExpression
classe, mas se eu não posso passar simplesFunc
isso não pode ser feito. O que devo fazer?
EDITAR
Talvez
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
não funciona, mas
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
trabalho! Isso é tudo que eu precisava.