2009-03-21 6 views
1

j'ai écrit ceci:LINQ to Entities: Faire la requête en face

 

var destinations = db.DestinationDetails. 
    Where(dd => dd.Language.Lang == "en-US" && 
     dd.Destination.Client.Any(c => c.Email == "[email protected]")); 
 

Comment puis-je récupérer destinationDetails ce client avec le courrier électronique [email protected] ne pas?

Cela ne fonctionne pas:

 

var destinations = db.DestinationDetails. 
    Where(dd => dd.Language.Lang == "en-US" && 
     dd.Destination.Client.Any(c => c.Email != "[email protected]")); 
 

Merci!

Répondre

4

Je pense que vous voulez utiliser tous au lieu de Tout:

dd.Destination.Client.All(c => c.Email != "[email protected]") 
+0

Les autres œuvres de réponse aussi! – VansFannel

+0

@Vans y, son négation de l'expression: P - mine lit: tous les clients n'ont pas cet e-mail, crhis lit: il n'y a pas de client qui a cet e-mail - vous pouvez voir pourquoi ils sont équivalents :) – eglasius

2

Essayez

var destinations = db.DestinationDetails. 
    Where(dd => dd.Language.Lang == "en-US" && 
     !dd.Destination.Client.Any(c => c.Email == "[email protected]")); 
1
var destinations =(db.DestinationDetails. 
    Where(dd => dd.Language.Lang == "en-US" && 
    dd.Destination.Client.Any(c => c.Email != "[email protected]")).Select c).ToList(); 

Essayez, vous pouvez obtenir le résultat ...