我正在尝试从DataTable中提取特定的错误行:
在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>();
这是异常:InvalidCastException
指定的演员表无效。
我对此没有太多经验。任何帮助将不胜感激。
答案 0 :(得分:1)
在 where 子句中,您试图将int
(字段值)等于List<int>
对象 - 当然会尝试强制转换然后失败。相反,请尝试以下方法:
DataTable errorDataTable = (from main in mainDataTable.AsEnumerable()
where errorLineNumbers.Contains(main.Field<int>("Row Number"))
select main).CopyToDataTable<DataRow>();