2010-11-09 7 views
4

Existe-t-il une méthode LINQ (ou autre) pour créer un nouveau tableau en effectuant une transformation sur chaque élément d'un tableau existant?Manière élégante de transformer des tableaux en C#?

E.g. une alternative à:

List<int> numbers = new List<int>(); 
foreach(string digit in stringArray) 
{ 
    numbers.Add(Convert.ToInt32(digit)); 
} 
return numbers.ToArray(); 

Répondre

8
return stringArray.Select(s => Convert.ToInt32(s)).ToArray(); 
5

Yep! LINQ est parfaitement adapté à ce genre de chose. Voici un exemple en utilisant query syntax:

return (from s in stringArray 
     select Convert.ToInt32(s)).ToArray(); 

answer de Bfree est la syntaxe de méthode équivalente. Voici un MSDN article sur la différence entre les deux.

8

Quelque chose comme ça?

int[] numbers = stringArray.Select(s => Convert.ToInt32(s)).ToArray(); 

Ou, avec la syntaxe de requête:

int[] numbers = (from s in stringArray 
       select Convert.ToInt32(s)).ToArray(); 
+0

+1 tant pour la requête lisible et syntaxe de la méthode – cordialgerm

Questions connexes