2016-05-24 6 views
1

7つのオブジェクト(タイプABPM)を日付と時間でグループ化しようとしましたが、正しい結果が得られません。Linq - 複数の列でグループ化されていない、ラムダ構文

Private Class ABPM 
    Public DT As Date = Date.Now 
    Public Hour As Integer = 0 
    Public Minute As Integer = 0 
    Public SBP As Integer = 0 
    Public DBP As Integer = 0 
End Class 

Dim abpms As New List(Of ABPM) 

The data in the list is here

次のクエリではなく、2

Dim hourlyDayGroup2 = abpms.GroupBy(Function(a As ABPM) New With {a.DT, a.Hour}) 

の7グループを生成するが(ラムダなし)これは正しい

Dim hourlyDayGroup = From a As ABPM In abpms _ 
         Group By a.DT, a.Hour Into Group 

何のみ2群を出力しますラムダクエリを書く正しい方法はありますか?おかげ

答えて

2

彼らは平等の計算に参加するようにあなたは、あなたの匿名型の使用Keyプロパティを作成する必要があります。

Dim hourlyDayGroup2 = abpms.GroupBy(Function(a As ABPM) New With {Key a.DT, Key a.Hour}) 

MSDNから:

キープロパティは、いくつかの非キー特性とは異なります基本的な方法:

  • キープロパティの値のみ2つのインスタンスが等しいかどうかを判断します。
  • キープロパティの値は読み取り専用であり、変更することはできません。
  • 匿名型のコンパイラ生成ハッシュコードアルゴリズムには、主要なプロパティ値のみが含まれています。

C#で、匿名型のすべてのプロパティがVBでのキープロパティと同じ意味を持っていることに注意してください。

+0

これは完璧です。 – vabii

関連する問題