Übergabe von func als Parameter in Linq an Entities und Fehler 'Interner .NET Framework-Datenprovider, Fehler 1025'
Wir haben eine Klasse namens Aufgabe:
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
Es hat eine Navigationseigenschaft namens TaskUsers, die Benutzer enthält, die an diese Takes angehängt sind:
public partial class TaskUser : EntityObject
{
public User User { get {...} set { } }
}
Jedes TaskUser-Objekt verfügt über ein Benutzerobjekt.
Wir sind gegebenIQueryable<Task> tasks
. Wir möchten Aufgaben finden, die dem Benutzer mit der ID = 1 zugewiesen wurden
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
alles funktioniert gut Wenn wir verwenden
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
wir werden nett'Internal .NET Framework Data Provider error 1025'
Error. Warum? Ich möchte mit viel komplizierteren Filtern bauenExpression
klasse, aber wenn ich nicht einfach durchkommen kannFunc
, das geht nicht. Was soll ich machen?
BEARBEITEN
Könnte sein
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
funktioniert nicht, aber
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
funktioniert! Das ist alles was ich brauche.