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

如何获取C中除最后一个元素以外的所有数组元素#

  •  38
  • dotcoder  · 技术社区  · 14 年前

    我有一个这样的字符串数组。

    string[] queries 数据超过一个字符串。

    我想跳过元素中的最后一个字符串,然后取剩下的字符串。我想出了

    var remStrings = queries.Reverse().Skip(1).Take(queries.Length - 1);
    

    还有更好的选择吗?

    5 回复  |  直到 7 年前
        1
  •  80
  •   Justin Niessner    14 年前
    var remStrings = queries.Take(queries.Length - 1);
    

    无需反转和跳跃。只需比数组中少取一个元素。

    如果你真的想要元素的相反顺序,你可以在 .Reverse() 到最后。

        2
  •  9
  •   ChrisF    14 年前

    为什么不只是有:

    var remStrings = queries.Take(queries.Length-1);
    

    按同样的顺序返回。

    追加 .Reverse() 如果有必要交换订单:

    var remStrings = queries.Take(queries.Length-1).Reverse();
    
        3
  •  4
  •   Enigmativity    7 年前

    微软的反应式扩展团队拥有交互式扩展(nuget“system.interactive”),可以让您做到这一点:

    var remStrings = queries.SkipLast(1);
    
        4
  •  2
  •   Community Marino Di Clemente    7 年前

    This answer from a related post 也值得一提,因为它优雅地适用于任何 IEnumerable 在一次通过中,不需要事先知道它的元素数量。

        5
  •  0
  •   FrostyOnion    7 年前

    编辑: 您可以有效地将数组替换为相同的数组减去最后一个元素,并使用以下行或代码:

    queries = queries.Take(queries.Length - 1).ToArray();
    

    如果要创建一个为您执行此操作的方法,则可以使用以下方法:

    public static string[] TrimLastElement(string[] arr) {
        return arr.Take(arr.Length - 1).ToArray();
    }
    

    并像这样在代码中实现它:

    queries = TrimLastElement(queries);