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

VB.NET 2012中DataTable.AsEnumerable编译错误解决问询

解决VB.NET中DataTable.AsEnumerable()报错BC30456的问题

错误原因

AsEnumerable()是System.Data.DataTableExtensions类提供的扩展方法,不属于DataTable本身的成员。出现BC30456错误的核心原因是:

  • 项目未引用System.Data.DataSetExtensions程序集
  • 代码未导入对应命名空间(或引用缺失导致扩展方法无法被识别)

解决方案

1. 添加程序集引用

在VB.NET 2012项目中:

  • 右键项目 → 选择「添加引用」
  • 在弹出窗口中找到System.Data.DataSetExtensions,勾选后点击「确定」

2. 确保导入命名空间

在代码文件顶部添加命名空间导入:

Imports System.Data

(注:多数情况下项目默认已导入,但缺失引用时即使有命名空间也无法识别扩展方法)

修正后的示例代码

Imports System.Data
Imports System.Data.OleDb

Module ExcelReader
    Sub Main()
        ' 替换为你的Excel文件路径
        Dim excelPath As String = "C:\test.xlsx"
        Dim connStr As String = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={excelPath};Extended Properties=""Excel 12.0 Xml;HDR=YES"""
        Dim sql As String = "SELECT * FROM [Sheet1$]"

        Using conn As New OleDbConnection(connStr)
            Using adapter As New OleDbDataAdapter(sql, conn)
                Dim dt As New DataTable()
                adapter.Fill(dt)

                ' 转换为可枚举集合并转为数组
                Dim dataArray = dt.AsEnumerable().Select(Function(r) r.ItemArray).ToArray()

                ' 打印到控制台
                For Each row In dataArray
                    Console.WriteLine(String.Join(vbTab, row))
                Next
            End Using
        End Using

        Console.ReadKey()
    End Sub
End Module

额外说明

VB.NET 2012对应的.NET Framework版本(4.0/4.5)完全支持DataSetExtensions,因此不是编译器版本过旧导致的问题,核心是引用缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:55:00