J'ai cela pour chaque boucleLINQ aux objets vs pour chaque - différence dans les horaires d'exécution
foreach (Account acct in acctTest)
{
if (acct.AccountId == acctId)
{
foreach (Customer cust in acct.CustomerColl)
{
if (cust.CustomerId == custId)
{
customerName = cust.CustomerName;
break;
}
}
}
}
requête Linq qui fait des choses similaires (pense que cela peut être amélioré)
customerName = (from acct in acctTest
where acct.AccountId == acctId
from cust in acct.CustomerColl
where cust.CustomerId == custId
select cust.CustomerName).ToString() ;
J'exercerai les deux ci-dessus dans une boucle de 1000 fois pendant 5 fois, obtenir les horaires d'exécution comme ci-dessous.
temps écoulé pour Pour chaque ::: 7377
Durée des Linq2 ::: 15653
temps écoulé pour Pour chaque 1576 :::
temps écoulé pour Linq2 ::: 1718
temps écoulé pour Pour chaque ::: 1569
durée des Linq2 ::: 1726
temps écoulé pour pour chaque 1569 :::
temps écoulé pour Linq2 ::: 5583
temps écoulé pour pour chaque 1570
::: Elapsed temps pour Linq2 :: : 1506
pourquoi existe-t-il une différence et une incohérence dans les temps d'exécution? De même, existe-t-il un moyen de réécrire la requête LINQ pour de meilleures performances?
Vous devez utiliser 'FirstOrDefault', pas' ToString' dans votre requête. –
oui, en utilisant FirstOrDefault comme suggéré par vous et KristoferA rend la requête linq plus rapide – jbagavathi