2016-04-11 9 views
1

Ich arbeite derzeit an einem Projekt, das die Verwendung eines List(of T) implementiert. Und ich versuche die Liste zu sortieren.vb.net Sortierliste (von T) basierend auf Klasseneigenschaft

Die Kollektion auf Klasse basiert PDF_Document

Public Class PDF_Document 
    Public FullFilePath As String 
    Public Property Size As String 
    Public Property DocNumber As String 
    Public Property Sequence As String 
    Public Property Revision As String 
End Class 

Wenn die Sammlung gefüllt ist, sollte es die Sammlung auf der Sequenznummer sortieren. 001, 002, 003, 004, ...

Aber wie sortieren Sie eine Sammlung basierend auf dieser Eigenschaft?

+2

Warum überhaupt Sie speichern eine solche Nummer als String? Wenn Sie diese mit führenden Nullen formatierte Zahl anzeigen möchten, formatieren Sie sie, wenn Sie sie anzeigen, z. mit 'sequence.ToString (" D3 ")' aber nicht als String speichern. –

+1

'myList.OrderBy (Funktion (z) z.Sequence) .ToList()' Wenn es nicht alle Zahlen sind, müssen Sie es möglicherweise anders machen. – Plutonix

+0

Dies ist die Art der Dokumentennummerierung bei meiner Arbeit seit ... Jahren, bevor ich hier gearbeitet habe. Es ist seltsam, ich weiß, aber unsere Kunden implementieren es auch die meiste Zeit, also denke ich, es ist nicht ungewöhnlich? –

Antwort

2

Warum speichern Sie eine solche Nummer als Zeichenfolge überhaupt? Wenn Sie diese mit führenden Nullen formatierte Zahl anzeigen möchten, formatieren Sie sie, wenn Sie sie anzeigen, z. mit sequence.ToString("D3"), aber nicht als String speichern.

Wenn Sie die ursprüngliche Liste sortieren möchten, können Sie List(Of T).Sort verwenden:

pdfList.Sort(Function(pdf1, pdf2) 
       Return pdf1.Sequence.CompareTo(pdf2.Sequence) 
      End Function) 

Wenn Sie nicht möchten, die ursprüngliche Liste ändern Sie LINQ verwenden können:

Dim ordered = From pdf In pdfList Order By pdf.Sequence 

Sie können erstellen eine neue Liste mit ToList, zB:

Dim orderedPdfList = ordered.ToList() 

Sonst hast du immer ha ve die Zeichenfolge Int32 zu analysieren:

Dim ordered = From pdf In pdfList Order By Int32.Parse(pdf.Sequence) 
Verwandte Themen