Bis*_*ath 1 .net c# linq vb.net anonymous-class
我有一个这种格式的 csv 文件
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
Run Code Online (Sandbox Code Playgroud)
我正在我的应用程序中将其转换为数据表。
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
Run Code Online (Sandbox Code Playgroud)
我预计 groupedResults 计数为 4,而不是显示的 5。
基本上它不会将第一行和第五行分为一组。
我期望具有相同值的对象将产生相同的密钥。
可能是什么原因呢?
使匿名类型属性不可变 - 这是使相等和散列起作用的方法。(在 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 _
} _
)
Run Code Online (Sandbox Code Playgroud)
编辑:该Key部分意味着属性是匿名类型的关键。有关详细信息,请参阅VB 匿名类型 MSDN 页面。
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |