VB.NET LINQ - 如何统计集合中每个子集合的数量?

3

考虑以下情况:

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个回答

6
在C#中:
int count = Store.Areas.SelectMany(x => x.Shelves).Count();

转换为VB:

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

(使用在线转换器,而不是VB专家)


太棒了,正是我想要的。 感谢您的快速回复! - Tom

2

使用此LINQ表达式

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

请注意,这与@BrokenGlass的答案不同。他首先使用SelectMany平铺嵌套集合,然后计算结果项的总数,即循环遍历项的总数。而我只循环遍历外部集合,并求和内部集合的Count属性。这应该会更快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接