2010-11-19 6 views
1

Ich bin mir nicht sicher, was mit der folgenden Syntax falsch ist. Ich möchte meinen DataContext für die folgenden Daten abfragen:Verschachtelte AND und OR Abfrage eines DataContext

Zeige mir alles, was nichts in FilesAccesses und nichts in FileAccessGroups hat. Zeigen Sie mir auch alles, was meine Benutzer-ID in FilesAccesses hat.

Hier ist die Syntax, die ich versuche zu verwenden. Es scheitert am || am Ende der dritten Zeile: "Operator '||' kann nicht auf Operanden vom Typ 'Lambda-Ausdruck' und 'Lambda-Ausdruck' angewandt werden "

Ist meine Syntax falsch? Diese Art von Abfragen muss möglich sein, oder?

return db.Files 
    .Where(
    (f => !f.FilesAccesses.Any() && !f.FilesAccessGroups.Any()) || 
    (f => f.FilesAccesses.Any(a => a.UserId == user))) 
    .OrderBy(f => f.ObjectType) 
    .ThenBy(f => f.Name); 

Antwort

3

Versuchen Sie dies, Ihre Syntax ist in der Tat falsch.

return db.Files 
    .Where(f => 
    (!f.FilesAccesses.Any() && !f.FilesAccessGroups.Any()) || 
    (f.FilesAccesses.Any(a => a.UserId == user))) 
    .OrderBy(f => f.ObjectType) 
    .ThenBy(f => f.Name);