【问题标题】:create a list of strings using a foreach loop from list of doubles. every two values must be compressed into a single string then added to list使用双精度列表中的 foreach 循环创建字符串列表。每两个值必须压缩成一个字符串,然后添加到列表中
【发布时间】:2019-02-02 11:44:39
【问题描述】:

我希望有人能很好地解决这个问题。

所以我有一个双精度列表,这些是坐标,例如 -123123、12313。如下图所示。

List of doubles

这些正在这个 foreach 循环中使用:

foreach (var coord in element.geometry.coordinates)
{


}

我正在尝试制作一个所述坐标的列表 - 但我需要将它们压缩成两个,而不是单个坐标的列表。

所以而不是列表

  • -1213123
  • 1345
  • -345
  • 1234535

我需要一个这样的字符串列表。

  • -1213123, 1345
  • -345, 1234535

当退出 foreach 循环时,使用 var 'coord' this 作为单个坐标。我如何创建一个列表配对每两个从循环中出来的值。

感谢您提供的任何帮助:)

【问题讨论】:

  • for (int i=0; i<list.Count; i+=2)?
  • @AlexanderPetrov 请您详细说明一下。 list.count 指的是什么列表?以及如何将 600 的列表变成 300 的列表,并将值配对成字符串?
  • 你有没有尝试过?

标签: c# string loops foreach


【解决方案1】:

如果foreach循环是强制的,那么

string[] lst = new string[element.geometry.coordinates.Count() / 2];

int i=0;
foreach (var coord in element.geometry.coordinates)
{
    if (i % 2 == 1) 
        lst[i-1] = $"{lst[i-1]}, coord";
    else
        lst[i] = coord

    ++i;

}

【讨论】:

  • 有什么理由拒绝投票?
  • 因为发布不费吹灰之力的“gimme teh codez”问题的答案无助于实现 Stack Overflow 的既定目标,即成为高质量问题和答案的存储库。
【解决方案2】:

我知道它看起来有点奇怪,但你可以使用 Linq.Zip 方法。

        var coordinates = element.geometry.coordinates;
        var result = coordinates
            .Where((_, index) => index % 2 == 0) // Get even numbers
            .Zip(
                coordinates.Where((_, index) => index % 2 == 1), // Get odd numbers
                (first, second) => $"{first}, {second}") // Zip them together
            .ToList(); // If you need the result as List<string>

【讨论】:

    【解决方案3】:

    您不能在foreach 循环中执行除 1 之外的步骤。因此,我建议改用for 循环。可以设置为第2步。

    var doubles = new List<double> { -1213123, 1345, -345, 1234535 };
    var strings = new List<string>();
    
    for (int i = 0; i < doubles.Count; i += 2)
    {
        strings.Add(doubles[i] + ", " + doubles[i + 1]);
    }
    

    不需要额外的条件if 语句。事实证明,该解决方案尽可能简单有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2017-09-11
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多