VB.Net查询CSV文件

VB.Net查询CSV文件,vb.net,csv,datatable,Vb.net,Csv,Datatable,我有一个csv文件,我需要处理,以找到只有几个行项目。我按照教程将CSV文件读入数据表。当我的问题是: SELECT * FROM <NameOfCsvFile> 从中选择* 这很好,但它会将整个CSV文件作为数据表返回。我只需要文件的一部分来检查已知错误。所以我修改了我的查询如下: SELECT * FROM <NameOfCsvFile> WHERE Column1 IN (Int1,Int2,Int3,Int4,Int5) 从列1所在的位置选择*(Int1、I

我有一个csv文件,我需要处理,以找到只有几个行项目。我按照教程将CSV文件读入数据表。当我的问题是:

SELECT * FROM <NameOfCsvFile>
从中选择*
这很好,但它会将整个CSV文件作为数据表返回。我只需要文件的一部分来检查已知错误。所以我修改了我的查询如下:

SELECT * FROM <NameOfCsvFile> WHERE Column1 IN (Int1,Int2,Int3,Int4,Int5)
从列1所在的位置选择*(Int1、Int2、Int3、Int4、Int5)
当我在调试器中检查DataTables输出时,它有正确的行计数(为5),但行列表等于零


我如何才能让它在MS的查询界面上工作,而不是手动循环整个CSV文件,返回我从数百条记录中找到的5条记录?

我找到了答案。查询工作正常,但调试器不允许您查看返回的行,因为它们尚未解码。调用
Dim rows()作为DataRows=dt.Select(“”)允许我查看CSV文件查询的实际结果


现在一切都好了

导入可能已将整数值转换为字符串,请在中尝试
Column1('Int1'、'Int2'…
您没有理由不工作。当然,您可以加载所有行并将其作为筛选器应用于何处。根据数据,OleDB可能会在某些或所有列上转换为文本。这假设
Column1
表示列名,而不是仅加载某些列那是什么list@Anand我尝试将它们转换为字符串,但没有为datatable返回任何结果,因此我认为它们没有被转换为字符串。@PUROTIX完全正确。我觉得这听起来很不错,特别是因为我的行数恢复正确,但现在实际返回了行。您可以使用可视化工具或调试窗口“查看”datatable。我怀疑datatable是否已损坏(在没有行的情况下报告行)。更可能的情况是,您正在显示如何使用它们