C# List中的Skip()和Take()

Skip()和Take()方法都是IEnumerable<T> 接口的扩展方法,包括C#中的所有Collections类,如ArrayList,Queue,Stack等等,还有数组和字符串都可以调用这两个方法。

int[] test = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
test.Skip(i)表示从下标i开始截取,返回类型为IEnumerable<T>,返回的集合中包括test[i]
Console.WriteLine(string.Concat(test.Skip(0)));;//结果为{0,1,2,3,4,5,6,7,8,9,}
test.Take(i)表示到下标i结束截取,返回类型为IEnumerable<T>,返回的集合中不包括test[i]
Console.WriteLine(string.Concat(test.Take(0)));//结果为空字符串

    1. 注意在Skip和Take连用时,后者的输入是前者的输出,而不是原输入
      2.  Console.WriteLine(string.Concat(test.Skip(2).Take(4)));//注意!结果为{2,3,4,5}
       
      var testList = new List<int>();
      //比如  testList里面是 1,2,3,4,5,6,7,8,9,10
      var result = testList.Skip(5);  //返回值就是 6,7,8,9,10;
      var result = testList.Take(5);  //返回值就是 1,2,3,4,5
      //搭配使用,一般用来分页
      var result = list.Skip(2).Take(2); //返回值 3,4
       

      Skip,Take:

      list = list.Skip(pageNum * pageSize).Take(pageSize).ToList();

      pageSize :表示一页多少条。

      pageNum:表示页数,但是正确的页数是pageNum + 1。因为pageNum = 0,是第一页。pageNum = 1的时候,是第二页。

      Skip :表示从第pageNum * pageSize + 1条数据开始,也就是说再这之前有pageNum * pageSize条数据。

      Take:表示显示多少条数据,也就是pageSize条。

       

       

posted on 2021-07-01 15:16  funiyi816  阅读(3734)  评论(0编辑  收藏  举报

导航