vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: Gerry79
Datum: 06.07.12 13:30

Hallo zusammen...
Ich habe hier eine kleine Frage.
Ich habe mir eine Datentabelle in einer List(Of) angelegt und fülle diese dann mit Argumenten aus einer angelegten Structure.

 
 
Public VehicleList As New List(Of Vehicles)
 
Public Structure Vehicles
     Dim Veh_Number As String
     Dim Veh_Name As String
     Dim Veh_Group As String
     Dim Veh_Sub As String
End Structure
Anschliessend fülle ich die Liste.

Dim v as New Vehicles
With v
   .Veh_Number = "123456789"
   .Veh_Name = "Testeintrag"
   .Veh_Group = "Gruppe 1"
End With
VehicleList.Add(v)
Wenn ich nun einen Eintrag benötige, dann habe ich immer ein bestimmtes Feld verglichen.

For Each v as Vehicles in VehicleList
    If v.Veh_Number = "123456789" then
       Msgbox(v.Veh_Name)
    End If
    Exit For 
next
Nun meine Frage:
Kann ich auch irgendwie direkt auf diesen Eintrag zugreifen statt über For Each zu suchen ?
Ich denke mir, das ein direktes aufsuchen nämlich ein wenig performanter sein könnte als eine Liste von fast 1000 Einträgen durchzusuchen.

Vielen Dank euch allen.

Gruß
Gerry

programmiert in VB.NET 2010

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: Manfred X
Datum: 06.07.12 14:15

Hallo!

Zunächst könntest Du eventuell die Liste sortieren und dann
die Binarysearch-Methode der Liste nutzen.
Zu dem Zweck muss aber entweder die Datenstruktur eine geeignete
Schnittstellen implementieren (IComparable) oder Du nutzt einen
Comparer.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: tosch
Datum: 06.07.12 14:30

wie wär's wenn Du ein Dictionary nimmst und die Veh_Nummer als Key nimmst?
Public VehicleList as Generic.Dictionary(Of String, Vehicles)
Danach kannst Du mit Vehicles.ContainsKey prüfen, ob ein Eintrag vorhanden ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: Manfred X
Datum: 06.07.12 14:33

Hallo!

Für diesen Zweck muss der Schlüssel aber EINDEUTIG sein.

Ansonsten kann man für die Datenelemente Spalten in einer
Datatable erstellen und die Zeilen mit Einträgen füllen.

Hängt man die Table an die Datasource einer Bindingsource,
stehen fürs Sortieren/Finden/Laden/Speichern geeignete
Methoden zur Verfügung.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: Gerry79
Datum: 06.07.12 14:35

Hallo Manfred,

der Schlüssel Veh_Number wäre eindeutig.

programmiert in VB.NET 2010

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: Manfred X
Datum: 06.07.12 14:38

Dann stellt sich zunächst noch die Frage,
woher kommen diese Daten (Quelle) und wie sollen sie
weiterverarbeitet werden.

Sortierbare Structure für die Liste - Veh_Name als Sortierkriterium:
Public Structure TestStructure
    Implements IComparable(Of TestStructure)
 
    Dim Veh_Number As String
    Dim Veh_Name As String
    Dim Veh_Group As String
    Dim Veh_Sub As String
 
    Public Function CompareTo(ByVal other As TestStructure) As Integer _
        Implements System.IComparable(Of TestStructure).CompareTo
        If Veh_Name = other.Veh_Name Then Return 0
        If Veh_Name > other.Veh_Name Then Return 1
        Return -1
    End Function
End Structure
Anwendung:
Dim lst As New List(Of TestStructure)
'Liste füllen, dann ...    
lst.Sort()
 
Dim index As Integer = lst.BinarySearch(New TestStructure With {.Veh_Name = _
  "gesuchter Name"})
if index < 0 then msgbox "Nichts gefunden"


Beitrag wurde zuletzt am 06.07.12 um 14:47:58 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einen einzelnen Eintrag in einer List(Of) zugreifen 
Autor: ModeratorFZelle (Moderator)
Datum: 08.07.12 11:07

Bitte hört auf Struct als Datenkontainer zu nehmen.
Es gibt gaaanz selten einen Grund dafür und gerade in listen macht es mehr Probleme als es löst ( byval nicht byref ).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel