Hallo Leute!
Ich habe eine
Nun würde ich gerne alle SubFoos der Parents in eine Liste zusammenfassen (zum Beispiel die Quantities). Ein Beispiel wie ichs bisher machen würde, findet ihr hier drunter.
Kann jemand mit mehr LINQ Erfahrung vllt. erklären wie es damit machbar wäre?
Vermutlich klappt das mit nem
Code ist Folgender, bitte kopieren, 2 Buttons auf die Form packen und testen.
Spoiler anzeigen
Vielen Dank für eure Zeit!
Ich habe eine
List Of(Foo)
, jeweiliges Item hat noch eine List(Of SubFoo)
.Nun würde ich gerne alle SubFoos der Parents in eine Liste zusammenfassen (zum Beispiel die Quantities). Ein Beispiel wie ichs bisher machen würde, findet ihr hier drunter.
Kann jemand mit mehr LINQ Erfahrung vllt. erklären wie es damit machbar wäre?
Vermutlich klappt das mit nem
Select
+ Sum
Befehl?Code ist Folgender, bitte kopieren, 2 Buttons auf die Form packen und testen.
VB.NET-Quellcode
- Imports System.Collections.ObjectModel
- Public Class Form1
- Public Property Foos As ObservableCollection(Of Foo)
- Sub New()
- InitializeComponent()
- Foos = New ObservableCollection(Of Foo)
- End Sub
- Public Class Foo
- Public Property ID As Integer
- Public Property SubFoos As ObservableCollection(Of SubFoo)
- ' und mehr Properties...
- Sub New(ID As Integer)
- SubFoos = New ObservableCollection(Of SubFoo)
- End Sub
- End Class
- Public Class SubFoo
- Public Property Name As String
- Public Property Quantity As Short
- ' und mehr Properties...
- Sub New(Name As String, Quantity As Short)
- Me.Name = Name
- Me.Quantity = Quantity
- End Sub
- End Class
- Private Sub GenerateTestData()
- Dim foo1 = New Foo(1)
- foo1.SubFoos.Add(New SubFoo("Testding", 8))
- foo1.SubFoos.Add(New SubFoo("Testding1", 7))
- Dim foo2 = New Foo(2)
- foo2.SubFoos.Add(New SubFoo("Testding", 5))
- Foos.Add(foo1)
- Foos.Add(foo2)
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
- GenerateTestData()
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- ' normale Variante wie ichs sonst machen würde:
- Dim together As New List(Of SubFoo)
- For Each f In Foos
- For Each sf In f.SubFoos
- Dim alreadyInside = together.SingleOrDefault(Function(x) x.Name = sf.Name)
- If alreadyInside Is Nothing Then
- together.Add(sf)
- Else
- alreadyInside.Quantity += sf.Quantity
- End If
- Next
- Next
- For Each sf In together
- MessageBox.Show(String.Format("Name: {0}, Quantity: {1}", sf.Name, sf.Quantity))
- Next
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- ' geht das einfacher?? Vllt. mit LINQ direkt?
- End Sub
- End Class
Vielen Dank für eure Zeit!
Polling is trolling!
Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rootbob91“ ()