using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using JSON.Controllers;
using System.Data;
namespace WebApplication1
{
public class Class1
{
/// <summary>
/// 將DataTable轉換成一個list
/// </summary>
/// <returns>返回一個List<User>對象</returns>
public List<User> TableToList()
{
string sql = "select * from T_User"; //T_User表里總共有 id,UserName,Age,Gender四列
DataTable dt= SqlHelper.ExecuteDataTable(sql,null);
var list = new List<User>(); //創建一個List<User>的實例
if (dt != null && dt.Rows.Count > 0)
{
//AsEnumerable():返回一個IEnumerable<T> 對象,其泛型參數 T 為 System.Data.DataRow。
list = (from p in dt.AsEnumerable()
select new User //new一個User對象
{
Id = p.Field<int>("id"),//p.Filed<int>("id") 其實就是獲取DataRow中ID列。即:row["ID"] 然后將它賦值給User類的Id字段。
UserName = p.Field<string>("UserName"),
Age = p.Field<int>("Age"),
Gender = p.Field<int>("Gender")
}).ToList(); //將這個User類對象轉換成list
}
int dataCount = list.Count; // 總的數據條數。
int pageSize=10;//每頁顯示多少條數據。
int pageCount; //總頁數。
int currentPage=3;//當前頁。--這里假設當前頁為第3頁。
pageCount = dataCount % pageSize == 0 ? (dataCount < pageSize ? (dataCount==0?0:1): (dataCount / pageSize)) : (dataCount / pageSize + 1);
//這個list 就是取到10條數據
//Skip跳過序列中指定數量的元素,然后返回剩余的元素。
//Take序列的開頭返回指定數量的連續元素。
list = list.Skip(pageSize * (currentPage - 1)).Take(pageSize).ToList(); //假設當前頁為第3頁。這么這里就是跳過 10*(3-1) 即跳過20條數據,Take(pageSize)的意思是:取10條數據,既然前面已經跳過前20條數據了,那么這里就是從21條開始,取10條咯
return list;
}
}
}