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的情况下完成所有这些步骤?

c#中的自动分页功能

似乎你想批量处理学生,如果是这种情况,你可以写一个扩展方法来做到这一点:

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...
}