繁体   English   中英

获取由元组列表的第一个值组成的数组

[英]Get array consisting of first values of a list of tuples

在我的C#代码中,我有一个元组列表。 元组本身包含两个类型为double数字和一个类型为LocalDate的对象。

List<Tuple<double, double, LocalDate>> tupleList = new List<Tuple<double, double, LocalDate>>();

例如,该列表如下所示。

1, 10, LocalDate1
12, 310, LocalDate2
31, 110, LocalDate3

创建只包含每个列表项的第一个double值的double数组的一种优雅方法是什么?

因此,我想要一个仅由列表中的LocalDate对象组成的ArrayList。 订单应保留。

预期结果应为:

double[] => [1, 12, 31]
double[] => [10, 310, 110]
ArrayList<> => [LocalDate1, LocalDate2, LocalDate3]

我知道,通常的方法是在for循环中遍历列表,并通过此循环创建数组。 但是,我认为应该有一种更简洁,优雅的方法。

Linq将是要走的路:

var firstValues = tupleList.Select(x => x.Item1).ToList();

这会将元组列表投影到仅第一个项目的列表中,并保持其顺序。 与第二,第三,第n个项目相同。
如果需要数组,只需调用ToArray()而不是ToList()

可以使用基线for循环来完成:

//Sorry for any Syntax errors. Got no VS installation in reach
double[] output = new double[tupleList.Length];

for(int i = 0; i < tupleList.Length; i++){
  output[i] = tupleList[i].Item1;
}

当然,像linq之类的东西或一般使用lambda的东西可能更现代。 但是我怀疑它是否更快或更高效。 它必须使用某种List并从中创建一个数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM