Basé sur le code suivant:LINQ: en utilisant IEnumerable.Count() ou IList.Count pour une meilleure performance
var grouped = filters.GroupBy(p => p.PropertyName);
int numOfRowElements = grouped.Count();
foreach (IGrouping<string, PropertyFilter> filter in grouped)
{
foreach (var propertyFilter in filter)
{
// do something
}
}
où filtre une liste, je crois comprendre que l'appel IEnumerable.Count() force la requête être exécuté. Le résultat de cette exécution est-il stocké dans la variable groupée, qui est ensuite utilisée dans la boucle foreach, ou la boucle foreach force-t-elle la requête à être exécutée à nouveau? Serait-il préférable de le faire à la place?
var grouped = filters.GroupBy(p => p.PropertyName).ToList();
int numOfRowElements = grouped.Count;
foreach (IGrouping<string, PropertyFilter> filter in grouped)
{
foreach (var propertyFilter in filter)
{
// do something
}
}
TIA.
Merci pour la réponse complète. La taille des données dans la liste originale ne sera pas très grande mais cette opération sera beaucoup effectuée sur le thread de l'interface utilisateur. –