来自:http://blog.csdn.net/soulscarrier
protected List ListPager(List DataSource, int CurrentPageIndex, int PageSize, string FilterExpression, ref int count)
{
count = 0;
if (DataSource == null || DataSource.Count == 0)
return DataSource;
count = DataSource.Count;
if (string.IsNullOrEmpty(FilterExpression))
{
int startIndex = CurrentPageIndex * PageSize;
if (startIndex + PageSize > DataSource.Count)
{
PageSize = DataSource.Count - startIndex;
}
return DataSource.GetRange(startIndex, PageSize);
}
else
{
DataTable dt = KingLib.DataHelper.ListToDataTable(DataSource);
DataView dv = dt.DefaultView;
dv.RowFilter = FilterExpression;
List NewDataSource = KingLib.DataHelper.DataTableToList(dv.ToTable());
count = NewDataSource.Count;
int startIndex = CurrentPageIndex * PageSize;
if (startIndex + PageSize > NewDataSource.Count)
{
PageSize = NewDataSource.Count - startIndex;
}
return NewDataSource.GetRange(startIndex, PageSize);
}
}