Сведения о вопросе

Fhohir

09:24, 19th August, 2020

Теги

vb.net   collections   paging    

Страница общей коллекции без Linq

Просмотров: 444   Ответов: 2

У меня есть объект типа System.Generic.Collections.List(Of MyCustomClass).

Учитывая целочисленные varaibles pagesize и pagenumber, как я могу собрать только одну страницу объектов MyCustomClass ?

Вот что у меня есть. Как я могу улучшить его?

'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



  Сведения об ответе

PAGE

16:01, 16th August, 2020

Generic.List должен предоставить методы Skip() и Take(), чтобы вы могли это сделать:

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

Если под "without Linq" вы подразумевали фреймворк 2.0, я не верю, что List (Of T) поддерживает эти методы. В этом случае используйте GetRange, как предложил Джонатан.


  Сведения об ответе

lourence

17:53, 24th August, 2020

Вы используете GetRange в своей коллекции реализации IEnuramble:

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);

Я верю, что вы можете понять, как использовать GetRange, чтобы захватить отдельную страницу отсюда.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться