返回复制和相乘的列表

时间:2013-04-26 19:48:46

标签: c# .net

我想返回给定列表的复制版本,其中每个元素都乘以标量。

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

VoltsPerDivX1是现有的List<double>类型列表。这是正确的方式还是有更好的方式?

1 个答案:

答案 0 :(得分:5)

这稍微更惯用:

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

如果Select(...)调用发出匿名类型,它也会表现良好。在您的示例中,您必须能够表达构造函数调用的列表类型。如果你要这样做:

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

由于类型是匿名的,因此无法表达列表的参数类型。这可能是一个好习惯(如果你绝对需要强制评估IEnumerable,并确保提出问题)使用.ToList()。还有.ToArray()