/// <summary>
/// 分页同步数据方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fullData"></param>
/// <param name="task"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public static async Task MergePageDataAsync<T>(List<T> fullData, Func<List<T>, Task> task, int pageSize = 5000) where T : class
{
var ii = 0;
for (int i = 0; i <= fullData.Count; i += pageSize)
{
var listi = fullData.Skip(i).Take(pageSize).ToList();
++ii;
await task(listi);
Console.WriteLine($"Task is {200} , 第 {ii}次同步数据,已同步{ii * pageSize} 条");
}
}
/// <summary>
/// 同步数据方法
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
private async Task SyncCustomerShipToAsync(List<CSTCustomerDto> dto)
{
await Task.Run(() => Console.WriteLine("同步了100条数据"));
}
调用:
var list = dt.ToDataList<User>();
Func<List<User>, Task> func = SyncCustomerShipToAsync;// new Func<List<User>, Task>( );
await MergePageDataAsync(list, func);