c#中的自动分页功能
本文关键字:功能 自动分页 | 更新日期: 2023-09-27 18:17:17
我对流感到困惑。我有一个学生对象列表。
List<Student> StudentLists;
一开始列表中将有10个学生对象
在c# 4.0 winform中有一个按钮,当我点击这个按钮时,
我需要从列表中获取前3个学生对象,并调用WCF服务并发送这三个学生对象指向WCF服务。
我已经实现了wcf回调功能。
处理完web服务后,我将得到这3个学生对象的回调结果。
每次回呼可能会在不同的时间出现。
一旦我得到了所有三个回调结果从webservice,我想采取下一个3可用并执行相同的web服务调用…
我想一直执行直到它处理了列表中的所有10项。
但是我知道如何每次从列表中取出3个对象。这就像分页。
var students = StudentLists.Skip(skip).Take(3).ToArray();
但我在做它在每次按钮点击。在每个按钮点击,我将采取下3个对象。
有没有办法在不执行button click的情况下完成所有这些步骤?
似乎你想批量处理学生,如果是这种情况,你可以写一个扩展方法来做到这一点:
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items, int batchSize)
{
return items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / batchSize)
.Select(g => g.Select(x => x.item));
}
用法:
foreach (var batch in StudentLists.Batch(3))
{
//Do something with batch
//Process
//Get result etc...
}