2008-08-21 16 views
2

Ich habe ein System.Generic.Collections.List (Of MyCustomClass) -Typ-Objekt.Seite eine generische Sammlung ohne Linq

Integer varaibles pagesize und pagenumber, wie kann ich nur eine einzelne Seite von MyCustomClass Objekte sammeln?

Das ist, was ich habe. Wie kann ich es verbessern?

'my given collection and paging parameters 
Dim AllOfMyCustomClassObjects As System.Collections.Generic.List(Of MyCustomClass) = GIVEN 
Dim pagesize As Integer = GIVEN 
Dim pagenumber As Integer = GIVEN 

'collect current page objects 
Dim PageObjects As New System.Collections.Generic.List(Of MyCustomClass) 
Dim objcount As Integer = 1 
For Each obj As MyCustomClass In AllOfMyCustomClassObjects 
If objcount > pagesize * (pagenumber - 1) And count <= pagesize * pagenumber Then 
    PageObjects.Add(obj) 
End If 
objcount = objcount + 1 
Next 

'find total page count 
Dim totalpages As Integer = CInt(Math.Floor(objcount/pagesize)) 
If objcount Mod pagesize > 0 Then 
totalpages = totalpages + 1 
End If 

Antwort

1

Sie verwenden GetRange auf Ihrer IEnuramble Umsetzung Kollektion:

List<int> lolInts = new List<int>(); 

for (int i = 0; i <= 100; i++) 
{ 
    lolInts.Add(i); 
} 

List<int> page1 = lolInts.GetRange(0, 49); 
List<int> page2 = lilInts.GetRange(50, 100); 

Ich vertraue dir herausfinden, wie GetRange zu verwenden, um eine einzelne Seite von hier zu greifen.

2

Generic.List sollte die Skip() und Take() Methoden zur Verfügung stellen, so können Sie dies tun:

Dim PageObjects As New System.Collections.Generic.List(Of MyCustomClass) 
PageObjects = AllOfMyCustomClassObjects.Skip(pagenumber * pagesize).Take(pagesize) 

Wenn von "ohne Linq" soll Sie auf dem 2.0 Framework, ich don Ich glaube nicht, dass List (Of T) diese Methoden unterstützt. In diesem Fall verwenden Sie GetRange wie Jonathan vorgeschlagen.