System.Data.EvaluateException HResult = 0x80131920 Message =无法在System.Int32和System.String上执行'='操作

时间:2018-07-27 06:05:10

标签: c#

public void MatchedDocumentsInFileCabinet(string MainFolder, string SubFolder, string FileName, string FilePath)
{
    // Checking Main Folder is present in FileCabinet, if present retrieving MainFolderID if not Inserting MainFolderName

    if (SelectedFileCabinetID == "")
    {
        SelectedFileCabinetID = "1";
    }
    int Mainfoldercount = 0;

    DocSortResult getfolderdetails = objFolderManager.GetFolderDetails();
    DataTable getFolderNames = new DataTable();
    if (getfolderdetails.resultDS != null && getfolderdetails.resultDS.Tables[0].Rows.Count > 0)
    {
        // Following line is showing error
        DataRow[] drResult = getfolderdetails.resultDS.Tables[0].Select("FileCabinet_ID = '" + SelectedFileCabinetID + "'" + "and" + " ParentFolderID = '" + "0" + "'" + "and" + " IsDelete = '" + "True" + "'");
        if (drResult.Count() != 0)
        {
            getFolderNames = drResult.CopyToDataTable();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

不知道getfolderdetails.resultDS.Tables[0]的结构很难知道哪一列,但是其中一列是整数,而您的Select(filter)告诉所有字段都是字符串。

您的代码调试示例将显示.Select("FileCabinet_ID = '4' and ParentFolderID = '0' and IsDelete = 'True' ")。错误消息说其中一个不是字符串。

我敢打赌IsDelete = 'True'可能是布尔值(SQL Server中的位列)和FileCabinet_IDParentFolderID或它们都是整数(这会导致错误)。

设置一个断点并检查您要过滤的数据列的数据类型。