Benutzer mit den meisten Antworten
Wert in List(of) suchen in einer Structure-Variablen

Frage
-
Hallo Leute,
ich habe eine Structure-Variable, die ich für eine List(of) verwende. Nun möchte ich in der List(of) ja auch suchen.
Beispiel:
Public Structure Elster_Appointment Public MdNr As Integer Public Year As Integer Public Subject As String End Structure Dim dicAppointmenlist As List(Of Elster_Appointment)
Wie kann ich jetzt feststellen, ob es z. B. für die dicAppointment.MdNr einen Wert gibt?
Ich kann zwar alle dicAppointment mit for i=0 to dicAppointment.Count-1 durchlaufen und die Prüfung machen. Aber kann man hier nicht auch mit Contains oder Find usw. arbeiten?
Das müsste doch gerade bei vielen Einträgen erheblich schneller sein oder?
Vielleicht kann mir ja einer einen Tip geben?
Vielen Dank im Voraus.
Gruß Ahmed
Antworten
-
Hi,
du kannst so etwas machen:
Dim res = dicAppointmenlist.Where(Function(g) g.MdNr > 0).ToList()
Oder mit Linq:
Dim re2 = From c In dicAppointmenlist Where (c.Subject Like "[a-f0-9]")
Es gibt viele Möglichkeiten...
Zu Find und Contains und so weiter gibt es doch eine gute Doku.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Bearbeitet Stefan Krömer Sonntag, 4. November 2018 16:14
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. November 2018 08:38
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 15. November 2018 07:14
-
Hi,
also wenn ich folgendes teste:
Public Structure Elster_Appointment Public MdNr As Integer Public Year As Integer Public Subject As String End Structure Dim dicAppointmenlist As List(Of Elster_Appointment) Sub Test0815() dicAppointmenlist = New List(Of Elster_Appointment) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 1, .Year = 12, .Subject = "q"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 2, .Year = 13, .Subject = "w"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 3, .Year = 14, .Subject = "e"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 4, .Year = 15, .Subject = "r"}) Dim r = dicAppointmenlist.FindIndex(Function(c) c.MdNr = 3) End Sub
...ist die Variable r=2, was ja richtig ist.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. November 2018 08:38
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 15. November 2018 07:14
Alle Antworten
-
Hi,
du kannst so etwas machen:
Dim res = dicAppointmenlist.Where(Function(g) g.MdNr > 0).ToList()
Oder mit Linq:
Dim re2 = From c In dicAppointmenlist Where (c.Subject Like "[a-f0-9]")
Es gibt viele Möglichkeiten...
Zu Find und Contains und so weiter gibt es doch eine gute Doku.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Bearbeitet Stefan Krömer Sonntag, 4. November 2018 16:14
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. November 2018 08:38
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 15. November 2018 07:14
-
Vielen Dank für die Info.
Ich bin zwischenzeitlich auch folgende Lösung gestoßen:
Dim r = dicAppointmenlist.FindIndex(Function(c) c.MdNr = lMdNr) If (r = -1) Then Exit Sub 'no Match
Die Funktion liefert allerdings immer nur ein r=0 (Wert gefunden) oder r=-1 (Wert nicht gefunden). Damit habe ich zwar meine Prüfung, aber wie muss ich vorgehen, wenn ich den genauen Index der List(of) haben möchte?
Ich hätte gedacht, dass FindIndex immer den Index von dicAppointment zurückgibt.
Gruß A. Martens
-
Also begreifen tue ich es zwar nicht ganz, aber wenn man
Debug.Print(dicAppointmenlist.Item(r).MdNr)
anwendet, wird die richtige MdNr ausgeworfen.
Ich werde mich wohl damit noch intensiver beschäftigen müssen.
Auf jeden Fall sind meine Fragen erst einmal alle geklärt.Ahmed
-
Hi,
also wenn ich folgendes teste:
Public Structure Elster_Appointment Public MdNr As Integer Public Year As Integer Public Subject As String End Structure Dim dicAppointmenlist As List(Of Elster_Appointment) Sub Test0815() dicAppointmenlist = New List(Of Elster_Appointment) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 1, .Year = 12, .Subject = "q"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 2, .Year = 13, .Subject = "w"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 3, .Year = 14, .Subject = "e"}) dicAppointmenlist.Add(New Elster_Appointment() With {.MdNr = 4, .Year = 15, .Subject = "r"}) Dim r = dicAppointmenlist.FindIndex(Function(c) c.MdNr = 3) End Sub
...ist die Variable r=2, was ja richtig ist.
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 8. November 2018 08:38
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 15. November 2018 07:14
-
Stimmt, funktioniert einwandfrei. Warum ex bei mir vorher immer nur 0 geliefert hatte, kann ich nicht sagen. Wahrscheinlich war ich nur einfach zu blöde! :-) Es wird jedenfalls das richtige Ergebnis (Index) geliefert.
Ich muss mich einfach mehr mit List(of) beschäftigen. Diese Möglichkeit ist echt flexibel und unheimlich mächtig.
Gruß Ahmed