VB.NET LINQ - 集合中的集合计数?

时间:2012-04-05 14:49:30

标签: vb.net linq

采取以下方案:

Public Class Store
    Public Overridable Property Areas As List(Of Area)
End Class

Public Class Area
    Public Overridable Property Shelves As List(Of Shelf)
End Class

Public Class Shelf
    Public Property ID as integer
End Class

获得商店货架总数的最快方法是什么? 即对于商店,我使用Areas.Count

获得区域总数

或者我是否需要遍历每个区域并统计货架数量?

2 个答案:

答案 0 :(得分:5)

在C#中:

int count = Store.Areas.SelectMany(x => x.Shelves).Count();

转换为VB:

Dim count = Store.Areas.SelectMany(Function(x) x.Shelves).Count()

(使用online converter,而不是VB家伙)

答案 1 :(得分:2)

使用此LINQ表达式

Dim count As Integer = store.Areas.Sum(Function(a) a.Shelves.Count())

请注意,这与@BrokenGlass的答案不同。他首先使用SelectMany展平嵌套集合,然后计算结果项的总数,即他循环遍历项目总数。在哪里我只循环外部集合并总结内部集合的Count属性。这应该快得多。