C#里分页封装方法/函数

由于需要处理大量数据,需要将大量数据进行分批处理。

为了方便,封装了方法:

此处用500条作为分页:

/// 
/// 委托
/// 
/// 
/// 已经分页好的数据
/// 
public delegate List MyDelegate(List pageList) where T : new();

/// 
/// 将入参进行分批处理
/// 
/// 
/// 需要进行分批的数据
/// 需要执行的方法,此方法出参入参见委托
/// 
public List GetPageDatas(List sourceList, MyDelegate myDelegate) where T : new()
{
    try
    {
        var fullResultList = new List();
        int count = sourceList.Count();
        int pageSize = 500;
        int pageCount = count / pageSize + (count % pageSize > 0 ? 1 : 0); //需要循环的页数
        for (var pageIndex = 1; pageIndex <= pageCount; pageIndex++)
        {
            var pageList = sourceList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            if (pageList == null || pageList.Count() <= 0)
                continue;
            var pageResultList = myDelegate(pageList);
            fullResultList.AddRange(pageResultList);
        }
        return fullResultList;
    }
    catch (Exception ex)
    {
        return null;
    }
}

写好之后,调用即可。

以下是用于模拟的调用代码:

/// 
/// 分批后需要执行的方法
/// 
/// 
/// 
private List ConsoleWrite(List pageList)
{
    var result = new List();
    //此处批量处理数据
    foreach (string str in pageList)
    {
        result.Add(decimal.Parse(str));
    }
    return result;
}

/// 
/// 测试
/// 
public void Test()
{
    long num = 10000;
    var gList = new List();
    for (int i = 1; i <= num; i++)
    {
        gList.Add(num.ToString() + ".01");
    }
    List sss = GetPageDatas(gList, ConsoleWrite);
    var ttt = sss.Sum(c => c);
    Console.WriteLine(ttt);
}

调用后得到的结果

C#里分页封装方法/函数_第1张图片

 

简单的分页完成了

你可能感兴趣的:(c#,c++)