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を使用してエリアの総数を取得します

または、各エリアをループして棚の数を集計する必要がありますか?

4

2 に答える 2

6

C#の場合:

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

VBに変換:

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

(VBの人ではなく、オンラインコンバーターを使用)

于 2012-04-05T14:52:59.663 に答える
2

このLINQ式を使用する

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

これは@BrokenGlassの回答とは異なることに注意してください。彼は最初にネストされたコレクションをフラット化しSelectMany、次に結果のアイテムの総数をカウントします。つまり、アイテムの総数をループします。一方、外側のコレクションをループして、Count内側のコレクションのプロパティを合計するだけです。これははるかに高速であるはずです。

于 2012-04-05T15:03:02.053 に答える