C# 如何在同一个对象集合上获取多个枚举数?

C# 如何在同一个对象集合上获取多个枚举数?,c#,iterator,C#,Iterator,我在PartnersPool类中有一组Partner对象,即列出partners。我也有实体对象。每个实体对象都包含“工作表”,其中包含从PartnerPool读取的合作伙伴列表 我想枚举ParnerPool中的合作伙伴,并获得一个枚举器,这样我就可以从我离开的地方开始为该特定实体枚举。不同的实体将枚举PartnerPool,每个实体都有自己的枚举器。我不想多次创建伙伴池来获取多个枚举数 所以我想做以下几点。假设我有100名合伙人: //Create a Enumerator. var Enum

我在PartnersPool类中有一组Partner对象,即列出partners。我也有实体对象。每个实体对象都包含“工作表”,其中包含从PartnerPool读取的合作伙伴列表

我想枚举ParnerPool中的合作伙伴,并获得一个枚举器,这样我就可以从我离开的地方开始为该特定实体枚举。不同的实体将枚举PartnerPool,每个实体都有自己的枚举器。我不想多次创建伙伴池来获取多个枚举数

所以我想做以下几点。假设我有100名合伙人:

//Create a Enumerator.
var Enumerator<Partner> enumeratorForEntity1;
//Create first entity 
var entity1 = new entity();
//following call gets only first 30 patners.
sheet.PartnerList = PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out Enumerator<Partner> enumeratorForEntity1 );
//Now create entity2 and enumerator for it.
var Enumerator<Partner> enumeratorForEntity2;
var entity2 = new entity();
//following method call should return the first 30 partners also.
//that is it should return brand new enumerator.
sheet.PartnerList = PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out Enumerator<Partner> enumeratorForEntity2 );

//Now if I again use the first enumerator i.e. "enumeratorForEntity1" I should get the next 30 partners that is, from 30 to 60.
sheet.PartnerList = PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out Enumerator<Partner> enumeratorForEntity1 );
//创建一个枚举器。
变量枚举器枚举器ForEntity1;
//创建第一个实体
var entity1=新实体();
//下面的调用只得到前30个patner。
sheet.PartnerList=PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out枚举器枚举器forEntity1);
//现在为它创建entity2和枚举器。
变量枚举器枚举器ForEntity2;
var entity2=新实体();
//下面的方法调用也应该返回前30个伙伴。
//也就是说,它应该返回全新的枚举数。
sheet.PartnerList=PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out枚举器枚举器forEntity2);
//现在,如果我再次使用第一个枚举器,即“enumeratorForEntity1”,我应该得到接下来的30个伙伴,即从30到60。
sheet.PartnerList=PartnerPool.GetOnlyThirtyPartnerDataAndReturnEnumerator(out枚举器枚举器forEntity1);

在PartnerPool类中,最好有两种不同的方法:

public List<Partner> GetOnlyThirtyPartnerDataAndReturnEnumerator(out Enumerator<Partner> enumerator) { /*Do whatever you are doing right now*/ }
public List<Partner> GetNextThirtyPartnerData(Enumerator<Partner> enumerator) { /*Use the enumerator to continue looping on the list*/ }
public List GetOnlyThirtyPartnerDataAndReturnEnumerator(out Enumerator Enumerator){/*现在做什么都行*/}
public List GetNextThirtyPartnerData(枚举器枚举器){/*使用枚举器继续在列表上循环*/}

在第二种方法中,只需调用enumerator.MoveNext,获取enumerator.Current,然后将其添加到返回的列表中

好吧,以30为例,合作伙伴的数量将根据特定条件动态生成。