2010-11-09 2 views
4

Есть ли хороший LINQ (или другой) метод создания нового массива, выполнив преобразование для каждого элемента существующего массива?Элегантный способ преобразования массивов в C#?

E.g. альтернатива:

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

ответ

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

Yep! LINQ отлично подходит для такого рода вещей. Ниже приведен пример с использованием query syntax:

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

BFree-х answer синтаксис метода эквивалентны. Вот MSDN article о различии между ними.

8

Нечто подобное?

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

Или, с синтаксисом запросов:

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

+1 как для читаемого запроса и синтаксиса метода – cordialgerm

Смежные вопросы