匿名オブジェクトのキーによるグループ化が期待どおりに動作しないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/626935

質問

このスマートフォンの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ページを参照してください。

>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top