2009-03-09 6 views
0

は、私は自分のアプリケーションにデータテーブルとして変換しています。このformart匿名オブジェクトのキー別グループが期待通りの動作をしないのはなぜですか?

A,B,value 
a1,b1,10 
a2,b1,12 
a2,b1,15 
a2,b2,14 
a1,b1,12 

のcsvファイルを持っています。

Dim enumerable = _dt.AsEnumerable 

Dim groupedResults = enumerable.GroupBy(_ 
            Function(x) _ 
             New With { _ 
                .A = x.Item("A").ToString, _ 
                .B = x.Item("B").ToString _ 
               } _ 
             ) 

私はgroupedResultsが4になると予想しました。
基本的に1行目と5行目を1つのグループにグループ化しません。

私は同じ値を持つオブジェクトが同じキーを生成することを期待しています。

どういう理由が考えられますか?

答えて

4

匿名型のプロパティを不変にします。これは、等価性とハッシュを機能させる方法です。 (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 anonymous types MSDN pageを参照してください。

+0

うわー、彼らは異なっていたハッシュコードをチェックしました。 – Biswanath

+0

Keyとは何ですか? – Biswanath

+0

ええ、その働き。 – Biswanath

関連する問題