1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace TEAMModelOS.SDK
- {
- public static class BatchTask
- {
- public static async Task<T[]> TaskPage<T>(this List<Task<T>> tasks,int pagesize) {
- if (tasks.IsNotEmpty())
- {
- if (tasks.Count <= pagesize)
- {
- return await Task.WhenAll(tasks);
- }
- else
- {
- List<T> ts = new List<T>();
- int pages = (tasks.Count + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max;
- for (int i = 0; i < pages; i++)
- {
- var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList();
- ts.AddRange(await Task.WhenAll(lists));
- }
- return ts.ToArray();
- }
- }
- else {
- return null;
- }
- }
- public static async Task TaskPage(this List<Task> tasks, int pagesize)
- {
- if (tasks.IsNotEmpty())
- {
- if (tasks.Count <= pagesize)
- {
- await Task.WhenAll(tasks);
- }
- else
- {
- int pages = (tasks.Count + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max;
- for (int i = 0; i < pages; i++)
- {
- var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList();
- await Task.WhenAll(lists);
- }
- }
- }
- }
- public static List<IEnumerable<T>> Page<T>(this IEnumerable<T> tasks, int pagesize)
- {
- if (tasks != null && tasks.Any())
- {
- if (tasks.Count() <= pagesize)
- {
- return new List<IEnumerable<T>> { tasks };
- }
- else
- {
- List<IEnumerable<T>> ts = new List<IEnumerable<T>>();
- int pages = (tasks.Count() + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max;
- for (int i = 0; i < pages; i++)
- {
- var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList();
- ts.Add(lists);
- }
- return ts;
- }
- }
- else
- {
- return new List<IEnumerable<T>> ();
- }
- }
- }
- }
|