对List <T>或者DataTable 进行分组,所以就封装了一下
主要是DataTable 要用ImportRow方法
public class OtherManager<T> {
/// <summary>
/// 对List进行分片
/// </summary>
/// <param name="source">要分片的List<T></param>
/// <param name="pageSize">分片的页容积</param>
/// <returns></returns>
public static List <List<T>> Segement(List <T> source, int pageSize)
{
List <List<T>> list = new List <List<T>>();
if (source == null || source.Count == 0)
{
return list;
}
int totalRec = source.Count;
int totalPage = totalRec % pageSize == 0 ? totalRec / pageSize : totalRec / pageSize + 1;
for (int index = 0; index < totalPage; index++)
{
int start = index * pageSize;
List <T> tmp = new List <T>();
if (index == totalPage - 1)//最后一页,半页
{
for (int row = start; row < totalRec; row++)
{
tmp.Add (source[row]);
}
}
else//满页
{
for (int row = start; row < start + pageSize; row++)
{
tmp.Add(source[row]);
}
}
list.Add(tmp);
}
return list;
}
/// <summary>
/// 对DataTable进行分片
/// </summary>
/// <param name="source">要分片的DataTable</param>
/// <param name="pageSize">分片的页容积</param>
/// <returns></returns>
public static List <DataTable > Segement(DataTable source, int pageSize)
{
List <DataTable> list = new List <DataTable>();
if (source == null || source.Rows.Count == 0)
{
return list;
}
int totalRec = source.Rows.Count;
int totalPage = totalRec % pageSize == 0 ? totalRec / pageSize : totalRec / pageSize + 1;
for (int index = 0; index < totalPage; index++)
{
int start = index * pageSize;
DataTable dt = new DataTable ();
if (index == totalPage - 1)//最后一页,半页
{
for (int row = start; row < totalRec; row++)
{
dt.ImportRow(source.Rows[row]);
}
}
else //满页
{
for (int row = start; row < start + pageSize; row++)
{
dt.ImportRow(source.Rows[row]);
}
}
list.Add(dt);
}
return list;
}
}