2013-04-26 3 views
0

Я хочу вернуть скопированную версию данного списка, в которой каждый элемент умножается на скаляр.Возвращает скопированный и умноженный список

... 
int attenuation = 3; 
return new List<double>(VoltsPerDivX1.Select(x => x*attenuation)); 

VoltsPerDivX1 является существующий список типов List<double>. Это правильный путь или есть лучшие?

ответ

5

Это немного более идиоматических:

return VoltsPerDivX1.Select(x => x * attenuation).ToList(); 

Он также ведет себя хорошо, если ваш Select(...) вызов издает анонимный тип. В вашем примере вы должны иметь возможность выразить тип списка для вызова конструктора. Если вы должны были сделать что-то вроде:

return VoltsPerDivX1 
    .Select(x => new { original = x, attenuated = x * attenuation }) 
    .ToList(); 

тип параметра из списка не может быть выражено, так как тип является анонимным. Вероятно, это хорошая привычка (если вам абсолютно необходимо принудительно оценить IEnumerable и обязательно задайте этот вопрос), используйте .ToList(). Также есть .ToArray().

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