2010-05-23 6 views
0

Voyez-vous une meilleure approche pour obtenir et concaténer item.Number dans une seule chaîne?LINQ To objects: Des idées plus rapides?

actuel:

var numbers = new StringBuilder(); 
// group is the result of a previous group by 
var basenumbers = group.Select(item => item.Number); 
basenumbers.Aggregate 
(
    numbers, 
    (res, element) => res.AppendFormat("{0:00}", element) 
); 

Répondre

7

Un foreach sera un peu plus simple et plus facile à comprendre.

var numbers = new StringBuilder(); 

foreach(var number in group.Select(item => item.Number)) 
{ 
    numbers.AppendFormat("{0:00}", number); 
} 
1

Peut-être que vous avez vraiment pas besoin d'utiliser StringBuilder explicitement ici - la méthode String.Concat devrait être (encore plus) efficace pour concaténation. Cependant, je ne suis pas sûr que vous appeliez ToString pour tous les éléments si vous l'utilisez comme celui-ci comme celui-ci est un problème de performance (je ne le crois pas - la question principale avec + chaînes de qu'ING copie):

String.Concat(grp.Select(item => item.Number.ToString("{0:00}")) 
+1

Cette surcharge de 'string.Concat' est disponible uniquement dans .NET 4.0 –

Questions connexes