VB.NET服务端模块调用Array的OrderBy、Count方法报错无法识别
问题根因
你遇到的OrderBy is not member of system.array报错,本质是LINQ扩展方法未被正确识别。OrderBy、Count等方法不是System.Array类的原生实例方法,是.NET Framework 3.5之后引入的System.Linq命名空间下的扩展方法,客户端窗体项目默认会自动添加相关引用和命名空间导入,服务端模块项目通常默认配置更精简,因此会出现该差异。
排查及解决步骤
- 检查项目目标.NET版本
右键项目 → 「属性」 → 「编译」选项卡 → 「高级编译选项」,确认目标Framework版本 ≥ .NET Framework 3.5。如果版本低于3.5,升级到3.5及以上版本即可支持LINQ语法。 - 检查System.Core程序集引用
右键项目 → 「引用」,查看已引用列表中是否存在System.Core。如果缺失,点击「添加引用」,在「框架」分类下找到System.Core勾选确认添加即可。 - 导入System.Linq命名空间
在代码文件顶部添加如下语句:
如果需要全局生效不需要每个文件单独导入,可以在项目属性的「引用」页面,将Imports System.LinqSystem.Linq勾选到「导入的命名空间」列表中。
验证方法
配置完成后,重新生成项目,此时输入数组变量的.联想列表会出现OrderBy、Count、Where等LINQ方法,你的洗牌代码可以正常运行。
额外提示:代码中用到的
rnd随机数实例需要提前初始化,避免后续运行时抛出空引用异常。
内容的提问来源于stack exchange,提问作者Idan Azari
相关产品推荐
相关产品推荐

