我有这个形式的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 _
} _
)
我预计groupsResults数量为4而不是显示的5 基本上它不会将第1和第5行分组为一组。
我期望具有相同值的对象将产生相同的键。
它可能是什么原因?
答案 0 :(得分: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 _
} _
)
编辑:Key
部分表示该属性是匿名类型的键。有关详细信息,请参阅VB anonymous types MSDN page。