c# – 使用LINQ从一个数组中获取前五个元素和最后五个元素

我最近被一个同事问:可以从数组中一个查询获取前五个元素和最后五个元素?

int[] someArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };

我试过的

int[] someArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
var firstFiveResults = someArray.Take(5);
var lastFiveResults = someArray.Skip(someArray.Count() - 5).Take(5);
var result = firstFiveResults;
result = result.Concat(lastFiveResults);

可以通过一个查询获取前五个元素和最后五个元素吗?

最佳答案
您可以使用.Where方法与lambda接受元素索引作为其第二个参数:

int[] someArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };

int[] newArray = someArray.Where((e, i) => i < 5 || i > someArray.Length - 6).ToArray();

foreach (var item in newArray) Console.WriteLine(item);

输出:

0, 1, 2, 3, 4, 14, 15, 16, 17, 18

转载注明原文:c# – 使用LINQ从一个数组中获取前五个元素和最后五个元素 - 代码日志