我正在尝试从数据表中提取特定的错误行:
在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>();