如何使用 SQL 在 DataTable 上运行 Linq 'IN'并返回 DataTable C#?



我正在尝试从数据表中提取特定的错误行:

在SQL中,这是我的想法:

SELECT 
*
FROM [Main].[tableData] AS [D] 
WHERE [D].[Row Number] IN (
-- List<int> errorLineNumbers Here
)

这是我的 C#:

DataTable mainDataTable = GetData();
List<int> errorLineNumbers errorLineNumbers = GerErrorLineNumbers(mainDataTable);
// This Crashes
DataTable errorDataTable = (from main in mainDataTable.AsEnumerable()
                            where main.Field<int>("Row Number").Equals(errorLineNumbers)
                            select main).CopyToDataTable<DataRow>();

这是例外:无效投射异常

指定的强制转换无效。

我在这方面没有太多经验。任何帮助将不胜感激。

where 子句中,您尝试将int(字段值(等同于List<int>对象 - 自然会尝试强制转换,然后失败。相反,请尝试以下操作:

DataTable errorDataTable = (from main in mainDataTable.AsEnumerable()
                            where errorLineNumbers.Contains(main.Field<int>("Row Number"))
                            select main).CopyToDataTable<DataRow>();

最新更新