2010-11-19 4 views
1

Je ne suis pas sûr de ce qui ne va pas avec la syntaxe suivante. Je voudrais interroger mon DataContext pour les données suivantes:Requêtes AND et OR imbriquées dans un DataContext

Montrez-moi tout ce qui n'a rien dans FilesAccess et rien dans FileAccessGroups. Montrez-moi aussi tout ce qui a mon ID utilisateur dans FilesAccesses.

Voici la syntaxe que j'essaie d'utiliser. Il échoue sur le || à la fin de la troisième ligne en disant: "Opérateur '||' ne peut pas être appliqué à des opérandes de type 'expression lambda' et 'expression lambda' "

Ma syntaxe est incorrecte? Ces types de requêtes doivent être possible non?

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); 

Répondre

3

Essayez ceci, votre syntaxe est en effet erronée.

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);