如何使用lambda表达式和linq从范围中获取元素?

如何使用lambda和linq按范围获取元素?

例如:

我有一个包含54个元素的表。 我只是想从1-10或10-20或20-30等中取出元素 – 通常用一些数值范围。

我怎样才能做到这一点?

List list = new List(); IEnumerable interval = list.Skip(a).Take(b); 

您可以使用Enumerable.SkipEnumerable.Take方法;

绕过序列中指定数量的元素,然后返回其余元素。


从序列的开头返回指定数量的连续元素。

 List yourlist = new List(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; IEnumerable newlist = yourlist.Skip(2).Take(3); foreach(var i in newlist) { Console.WriteLine(i); } 

输出将是;

 3 4 5 

这是一个DEMO

如果你想要的是页面,

 int pageIndex = 1; int pageSize= 10 List list = new List(); IEnumerable interval = list.Skip(pageIndex*pageSize).Take(pageSize); 

像这样:

 MyList.Skip(x).Take(y); 

您可以使用

 .Skip(n1).Take(n2) 

使用List.GetRange(int index, int count);

 List numbers = new List() { 1, 2, 3, 4, 5, 6 }; List firstThreeNumbers = numbers.GetRange(0, 3); List lastThreeNumbers = numbers.GetRange(numbers.Count - 3, 3); 

不要SkipTake ,只是GetRange

希望这可以帮助!