我有一个像这样的字符串数组.
string[] queries 数据多个字符串.
我想跳过元素中的最后一个字符串并取剩余的字符串.我想出来了
var remStrings = queries.Reverse().Skip(1).Take(queries.Length - 1);
Run Code Online (Sandbox Code Playgroud)
有更好的替代方案吗?
Jus*_*ner 90
var remStrings = queries.Take(queries.Length - 1);
Run Code Online (Sandbox Code Playgroud)
无需反向和跳过.只需要比阵列中少一个元素.
如果你真的想要相反的元素,你可以坚持.Reverse()到最后.
use*_*290 12
对于现在发现这个的任何人......
随着即将对范围和索引 C# 8 和 .NET Core 3.0 的支持,您可以简单地编写
var remStrings = queries[..^1]
Run Code Online (Sandbox Code Playgroud)
这是简称
var remStrings = queries[0..^1]
Run Code Online (Sandbox Code Playgroud)
这是通过将0and转换1为索引 ( System.Index) 来实现的,其中 the^是从序列末尾开始索引的标记(实际上是一个运算符)。然后从这些索引System.Range生成一个范围 ( ),然后可以使用它来访问数组。(请参阅https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8#indices-and-ranges)
目前这只适用于 .NET Core 3.0 的预览版
Chr*_*isF 10
为什么不只是:
var remStrings = queries.Take(queries.Length-1);
Run Code Online (Sandbox Code Playgroud)
哪个将以相同的顺序返回它们.
.Reverse()如果这是必要的要求,则附加交换订单:
var remStrings = queries.Take(queries.Length-1).Reverse();
Run Code Online (Sandbox Code Playgroud)
Microsoft的Reactive Extensions团队拥有交互式扩展(NuGet“ System.Interactive”),您可以通过以下方式进行操作:
var remStrings = queries.SkipLast(1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36067 次 |
| 最近记录: |