2014-03-19 49 views
1

我在PartnersPool類List合作伙伴中擁有合作伙伴對象的集合。我也有實體對象。每個實體對象都包含「工作表」,其中包含合作伙伴列表,該列表正在從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); 

回答

0

在課堂PartnerPool,它的更好,如果你有2種不同的方法:

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*/ } 

二號方法,只需撥打enumerator.MoveNext,得到enumerator.Current再加入返回列表

+0

好吧,30是一個例子,合作伙伴的數量將根據一定的條件動態生成。 – naveen

相關問題