Hallo,
ich habe schon viel mit LINQ umgesetzt - scheinbar noch nicht genug - denn eine Sache bekomme ich nicht hin.
Ich habe eine Liste von einem Objekt was ebenfalls jeweils eine weitere Liste mit weiteren Objekten enthält.
Dort drin befinden sich Werte die ich summieren möchte.
Werte aus Objekten in einfachen Listen kann ich summieren. Aber die zusätzliche Stufe bekomme ich nicht hin. Ich habe dafür mal ein exemplarisches Konstruk aufgestellt damit es jeder der es versteht nachvollziehen kann was ich vorhabe.
Am Ende sollen halt alle Werte (Amount) von der VarID 1001 summiert werden.
NACHTRAG: Ich habe es hinbekommen. SelectMany musste ich nehmen:
Jetzt geht es aber weiter. Nun möchte ich ein Ergebnis mit einer Liste vom Typ Order in welchen die VarID 1003 vorkommt. Das wäre ja ID 1 und ID 3.
Mit dieser Funktion bekomme ich aber nur die Liste vom Typ Order.Positions zurück:
Eine Idee?
ich habe schon viel mit LINQ umgesetzt - scheinbar noch nicht genug - denn eine Sache bekomme ich nicht hin.
Ich habe eine Liste von einem Objekt was ebenfalls jeweils eine weitere Liste mit weiteren Objekten enthält.
Dort drin befinden sich Werte die ich summieren möchte.
Werte aus Objekten in einfachen Listen kann ich summieren. Aber die zusätzliche Stufe bekomme ich nicht hin. Ich habe dafür mal ein exemplarisches Konstruk aufgestellt damit es jeder der es versteht nachvollziehen kann was ich vorhabe.
VB.NET-Quellcode
- Module Module1
- Sub Main()
- Dim ORDERLIST As New List(Of Order) From {New Order With {
- .ID = 1, .Name = "Bestellung 1", .PosList = New List(Of Order.Positions) From {
- New Order.Positions With {.VarID = 1001, .Amount = 5},
- New Order.Positions With {.VarID = 1002, .Amount = 10},
- New Order.Positions With {.VarID = 1003, .Amount = 20}}},
- New Order With {
- .ID = 2, .Name = "Bestellung 2", .PosList = New List(Of Order.Positions) From {
- New Order.Positions With {.VarID = 1001, .Amount = 10},
- New Order.Positions With {.VarID = 1002, .Amount = 15},
- New Order.Positions With {.VarID = 9999, .Amount = 10}}},
- New Order With {
- .ID = 3, .Name = "Bestellung 3", .PosList = New List(Of Order.Positions) From {
- New Order.Positions With {.VarID = 1001, .Amount = 5},
- New Order.Positions With {.VarID = 1002, .Amount = 5},
- New Order.Positions With {.VarID = 1003, .Amount = 10}}}}
- 'Wäre diese PosList nicht innerhalb der ORDERLIST, würde ich mit dieser Anweisung die Werte summieren:
- 'PosList.Where(Function(x) x.VarID = 1001).Sum(Function(x) x.Amount)
- 'Das hier funktioniert leider nicht bzw. ich komme nicht auf die Properties innerhalb der PosList
- Dim SummeVarID_1001 As Integer = ORDERLIST.Select(Function(x) x.PosList).Where( 'hier hörts auf
- End Sub
- Public Class Order
- Public Property ID As Integer
- Public Property Name As String
- Public Property PosList As List(Of Positions)
- Public Class Positions
- Public Property VarID As Integer
- Public Property Amount As Integer
- End Class
- End Class
- End Module
Am Ende sollen halt alle Werte (Amount) von der VarID 1001 summiert werden.
NACHTRAG: Ich habe es hinbekommen. SelectMany musste ich nehmen:
Jetzt geht es aber weiter. Nun möchte ich ein Ergebnis mit einer Liste vom Typ Order in welchen die VarID 1003 vorkommt. Das wäre ja ID 1 und ID 3.
Mit dieser Funktion bekomme ich aber nur die Liste vom Typ Order.Positions zurück:
Eine Idee?

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Khartak“ ()