2011-01-05 2 views
0

Nicht der beste Titel hier, ich weiß.Vermeiden Sie die Iteration mit einem Join (LinQ)

Die Sache, die ich habe diesen Code und es sieht schrecklich aus. Gibt es einen besseren Weg dies zu schreiben?

foreach (Agency agency in local.Agencies.GetAll().Where(a => a.Active).Where(a => a.Mandatory)) 
{ 
    if (agencies.Where(a => a.AgencyId == agency.Id).Any()) 
    { 
     mandatoryFound = true; 
     break; 
    } 
} 

So local ist mein EF Kontext und agencies ist eine Liste von dem Client gesendet. Ich muss überprüfen, ob in dieser Liste mindestens eine Pflichtagentur enthalten ist.

+0

Dieser Code ist nicht schrecklich, wenn Sie es in linq2entity verwenden, wird es Elemente iterieren. –

Antwort

0
mandatoryFound = local.Agencies.GetAll().Where(a => a.Active && a.Mandatory && agencies.Any(ag => ag.AgencyId == a.Id)).Any() 
+0

'.FirstOrDefault()! = Null' ist das gleiche wie' .Any() ' –

+0

Warum' FirstOrDefault() 'und nicht Any? –

+0

Dank @The_Smallest und @Saeed, Sie haben Recht, behoben;) –