Считать из списка (списка (MyObject))

#vb.net #linq

#vb.net #linq

Вопрос:

У меня есть список списков (StoreList). Мне нужно количество всех доступных яблок во всех магазинах. Не уверен, как это сделать.

 Class myObject
    Public What As String
    Public Available As Boolean
End Class

Public Sub Test()

    Dim ItemList As New List(Of myObject)
    ItemList.Add(New myObject With {.What = "Apple", .Available = True})
    ItemList.Add(New myObject With {.What = "Cherry", .Available = False})

    Dim StoreList As New List(Of List(Of myObject))
    StoreList.Add(ItemList)
    'StoreList.Add(...)

    'error here
    Dim count As Integer = StoreList.Sum( _
            ItemList.Where(Function(x As myObject) _
                   x.What = "Apple" And x.Available).Count)


End Sub
  

Очевидно, что я не могу суммировать количество так, как я это делаю. Как бы я использовал Linq, чтобы получить количество всех доступных яблок во всех магазинах?

Ответ №1:

Вы забыли назначить функцию в Sum try this:

 Dim count As Integer = StoreList.Sum( Function(inner) _
        inner.Where(Function(x As myObject) _
               x.What = "Apple" And x.Available).Count)