VB.NET自定义对象列表排序出现BC32017错误如何解决
问题排查与修正
错误原因
- 语法错误1:混淆了VB LINQ查询语法和方法语法的写法,VB的LINQ查询语法中
Order By不需要加括号,Ascending也不能放在括号内 - 语法错误2:代码中引用类属性写的是
mdate,和类定义的mDate大小写不一致,虽然VB默认不区分大小写,但建议保持一致避免后续出现意外问题 - 隐形问题:LINQ语句换行如果没有对应语法支持,会被编译器识别为两行独立代码,直接触发语法错误
正确代码示例
你定义的sMSG自定义类没有问题,排序代码可以任选下面两种写法:
写法1:LINQ查询语法(和你原有写法逻辑更贴近)
Dim ordered = From obj In SortedList Order By obj.mDate Ascending SortedList = ordered.ToList()
注意Order和By中间需要加空格,不要加括号,Ascending直接跟在属性名后即可。
写法2:LINQ方法语法(更简洁,新手更不容易写错)
SortedList = SortedList.OrderBy(Function(obj) obj.mDate).ToList()
该写法单句即可完成排序逻辑,不需要处理换行规则,使用门槛更低。
补充说明
你设计的实现思路完全可行:通过自定义类存储文件名和邮件发送日期,将实例存入列表后排序,再遍历处理的逻辑没有问题,可以稳定实现按发送日期顺序处理MSG文件的需求。
内容的提问来源于stack exchange,提问作者Max Headroom
相关产品推荐
相关产品推荐

