代码之家  ›  专栏  ›  技术社区  ›  beta

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

  •  1
  • beta  · 技术社区  · 5 年前

    在我的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[] => [1, 12, 31]
    double[] => [10, 310, 110]
    ArrayList<> => [LocalDate1, LocalDate2, LocalDate3]
    

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

    1 回复  |  直到 5 年前
        1
  •  5
  •   pappbence96 Sinchana    5 年前

    Linq将是一条出路:

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

    这将元组列表投影到只包含第一个项的列表中,保持它们的顺序。第二项、第三项、第n项也一样。
    如果需要数组,只需调用 ToArray() 而不是 ToList()

        2
  •  1
  •   RoadRunner    5 年前

    这可以通过循环的基线来完成:

    //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或者其他使用lambdas的东西可能更现代。但我怀疑它是否更快或更节省内存。它必须使用某种类型的列表并从中创建一个数组。