2011-01-05 2 views
0

Pas le meilleur titre ici, je sais.Éviter itérer avec une jointure (LinQ)

La chose que j'ai ce code et ça a l'air horrible. Y a-t-il une meilleure façon d'écrire cela?

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

Alors local est mon contexte EF, et agencies est une liste envoyée par le client. Je dois vérifier si dans cette liste il y a au moins une agence obligatoire.

+0

Ce code n'est pas terrible si vous l'utilisez dans linq2entity il va itérer articles. –

Répondre

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

'.FirstOrDefault()! = Null' est identique à' .Any() ' –

+0

Pourquoi' FirstOrDefault() 'et non Any? –

+0

Merci @The_Smallest et @Saeed, vous avez raison, fixe;) –

Questions connexes