You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET使用Parallel.ForEach遍历DataSet中DataTable出现重载解析失败错误求助

问题定位与解决方案

错误根源

Parallel.ForEach要求传入的可枚举对象必须实现泛型IEnumerable(Of T)接口,而你代码中的ds.Tables.Cast(Of DataTable)存在语法错误:
Cast(Of T)是LINQ提供的泛型扩展方法,VB.NET中调用泛型方法时必须追加方法调用括号(),你漏写了括号导致编译器无法识别该方法的返回值为IEnumerable(Of DataTable)类型,自然匹配不到Parallel.ForEach的对应重载,触发重载解析失败报错。

修正方案

将Parallel.ForEach调用段修改为如下代码即可:

Parallel.ForEach(
ds.Tables.Cast(Of DataTable)(),
Sub(table)
    ProcessTable(table)
End Sub
)

额外注意事项

  • 请确认代码顶部已经导入了对应命名空间,否则依然会触发编译错误:
    Imports System.Linq
    Imports System.Threading.Tasks
    
  • 你自定义的ProcessTable方法必须保证线程安全,不要在方法内对共享资源做无锁的写入操作,DataTable、DataSet本身的实例成员不保证线程安全,并行操作时涉及写入操作必须手动加锁。

内容的提问来源于stack exchange,提问作者Acavier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:24:02