项目引用DataSetExtensions及System.Data时扩展方法无法使用问题
解决方案
- 首先确认代码文件顶部已添加
using System.Linq;指令:ToList()是System.Linq命名空间下的通用扩展方法,并非System.Data.DataSetExtensions的内置方法,老版本项目默认不会自动引入该命名空间。 - 核对
System.Data.DataSetExtensions引用的版本匹配性:打开该引用的属性面板,确认运行时版本为v4.0.30319,和项目目标框架.NET 4.7.1对应,避免引用低版本.NET Framework对应的程序集。 - 检查项目配置文件(.csproj)的引用配置:卸载项目后编辑.csproj文件,找到
System.Data.DataSetExtensions的引用节点,删除节点下的<HintPath>子节点,保留最简引用配置<Reference Include="System.Data.DataSetExtensions" />,让VS自动适配当前框架的官方程序集,避免老项目迁移时遗留的硬编码旧路径指向错误的dll。 - 清理配置文件中的错误程序集重定向:打开app.config/web.config,查找
<assemblyBinding>节点下是否存在System.Data.DataSetExtensions相关的重定向规则,若版本号不匹配直接删除该规则,VS会自动生成正确的重定向配置。 - 排查扩展方法冲突:如果上述配置都正确,可以尝试完整调用方法测试编译:
var list = System.Linq.Enumerable.ToList( dtUserAccounts.AsEnumerable().Select(m => new UserAccount() { UserId = m.Field<string>("UserId"), FirstName = m.Field<string>("FirstName"), LastName = m.Field<string>("LastName") }) );
如果该写法可正常编译,说明当前代码上下文存在同名扩展方法覆盖了系统默认实现,可调整命名空间引入优先级解决。
内容的提问来源于stack exchange,提问作者mikepoole72
相关产品推荐
相关产品推荐

