Linq:使用Take和Skip实现分页
Skip,Take:
1 list = list.Skip(pageNum * pageSize).Take(pageSize).ToList();
pageSize :表示一页多少条。
pageNum:表示页数,但是正确的页数是pageNum + 1。因为pageNum = 0,是第一页。pageNum = 1的时候,是第二页。
Skip :表示从第pageNum * pageSize + 1条数据开始,也就是说再这之前有pageNum * pageSize条数据。
Take:表示显示多少条数据,也就是pageSize条。
1 list = list.Skip(5 * 2).Take(2).ToList();
pageNum * pageSize = 10,那么之前已经有10条数据。从第11条数据开始查询。查询2条。这就是第6页显示的内容。
参考代码:
1 class Program 2 { 3 static int Main() 4 { 5 //每页条数 6 const int pageSize = 2; 7 //页码 0也就是第一条 8 int pageNum = 0; 9 10 //源数据 11 string[] names = { "刘一","陈二","张三","李四","王五","赵六","孙七","周八","吴九" }; 12 13 while (pageNum * pageSize < names.Length) 14 { 15 //分页 16 var query = names.Skip(pageNum * pageSize).Take(pageSize); 17 Console.WriteLine("输出第{0}页记录", pageNum + 1); 18 //输出每页内容 19 foreach (var q in query) 20 { 21 Console.WriteLine(q); 22 } 23 pageNum++; 24 } 25 26 Console.ReadKey(); 27 28 return 0; 29 } 30 }

浙公网安备 33010602011771号