C#使用索引,对象和DoStuff()/到数组列出Lambda

时间:2018-03-13 09:44:48

标签: c# list linq lambda generic-collections

有没有办法可以简化这段代码?

double[] timeline = new double[dataList.Count];

for (int i = 0; i < dataList.Count; i++){
          timeline[i] = dataList[i].position;
}

return timeline;

首先想到:

new double[datalist.ToArray("lambda which selects all .position attributes") <- is this possible?

第二个想法:

datList.Select((x, i) => timeline[i] = x)

有些东西链接,但这不起作用......我google了很多,找不到任何解决方案。

我想简化它,因为我喜欢lamda表达式,我想了解更多关于它们的信息。

2 个答案:

答案 0 :(得分:4)

除非我在这里遗漏了明显的东西,为什么不简单地使用SelectToArray

double[] timeline = dataList.Select(d => d.position).ToArray();

答案 1 :(得分:2)

您可以简单地使用投影(即Select LINQ方法):

IEnumerable<double> timeLine = dataList.Select(dl => dl.position);

如果您需要将其转换为数组,则可以使用ToArray方法