匿名オブジェクトのキーによるグループ化が期待どおりに動作しないのはなぜですか?
-
06-07-2019 - |
質問
このスマートフォンのcsvファイルがあります
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
アプリケーションでデータテーブルとして変換しています。
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
groupedResultsのカウントは、表示される5ではなく4になると予想していました。
基本的に、1行目と5行目で1つのグループにグループ化することはありません。
同じ値を持つオブジェクトは同じキーを生成するはずです。
その理由は何ですか?
解決
匿名型のプロパティを不変にします-これが平等とハッシュを機能させる方法です。 (C#では、すべての匿名型はデフォルトで不変です。)
これを試してください
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
Key .A = x.Item("A").ToString, _
Key .B = x.Item("B").ToString _
} _
)
EDIT: Key
部分は、プロパティが匿名型のキーであることを意味します。詳細については、 VB匿名タイプのMSDNページを参照してください。
所属していません StackOverflow