how to take all array elements except last element in C#
var remStrings = queries.Take(queries.Length - 1);
No need to Reverse and Skip. Just take one less element than there are in the array.
If you really wanted the elements in the reverse order, you could tack on a .Reverse()
to the end.
For anyone finding this now...
With the upcoming support for ranges and indices C# 8 and .NET Core 3.0 you can simply write
var remStrings = queries[..^1]
This is short for
var remStrings = queries[0..^1]
This works by converting the 0
and 1
to indices (System.Index
), with the ^
being the marker (actually an operator) to index from the end of a sequence. From these indices a range (System.Range
) is then generates which can then be used to access the array. (See https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8#indices-and-ranges)
Currently this only works in the preview version of .NET Core 3.0