2

System.Generic.Collections.List(Of MyCustomClass) 型のオブジェクトがあります。

整数変数 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
4

2 に答える 2

2

Generic.List は Skip() および Take() メソッドを提供する必要があるため、次のようにすることができます。

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

「Linqなし」で2.0フレームワークを意味する場合、 List(Of T) がそれらのメソッドをサポートしているとは思いません。その場合、Jonathan が提案したように GetRange を使用します。

于 2008-08-21T21:47:46.943 に答える
1

コレクションを実装する IEnuramble で GetRange を使用します。

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 を使用して個々のページを取得する方法を理解できると思います。

于 2008-08-21T21:47:42.747 に答える