Kombinieren von Ausdrucksbäumen
Ich habe den folgenden Ausdruck:
public Expression<Func<T, bool>> UserAccessCheckExpression<T>(int userId) where T : class
{
return x => (IsAdmin || userId == CurrentUserId || userId == 0);
}
Dann möchte ich diesen Filter auf mehrere Sammlungen (IQueryable) wie diese anwenden:
return tasks
.Where(t => t.TaskUsers
.Any(x => UserAccessCheckExpression<TaskUser>(x.User) && x.SomeBool == true));
Ich erhalte dabei folgende Fehlermeldung:
Error 40 Typ kann nicht implizit konvertiert werdenSystem.Linq.Expressions.Expression<System.Func<TaskUser,bool>>
zubool
Ich kann die Problemumgehung nicht mit der Schnittstellenvererbung verwenden (wie TaskUser die Schnittstelle mit der Eigenschaft int UserId (wobei T: IHasUserId) erbt), da ich die Logik kombinieren möchte.