簡體   English   中英

比較int時Linq to Entities錯誤? 值

[英]Linq to Entities error when comparing int? to a values

我試圖編寫一個遍歷樹的遞歸函數。 我的實體“文件夾”具有ParentFolderID和FolderID的兩個屬性。 如果文件夾位於根級別,則其ParentFolderID為null。 我創建了一個遞歸函數,該函數接受參數ID並添加返回與ID具有相同ParentFolderID的所有文件夾實體,但是出現了“無法創建類型為System.Object”的常量的錯誤。 在這種情況下,僅支持原始類型或枚舉類型。

這是我的功能:

    private List<Folder> GetFolderChildren(int? folderId)
    {
        var childFolders = new List<Folder>();

        //  finalList is List<> that is actually returned
        var finalList = new List<Folder>();

        //  Your looking at the root level folder
        if (folderId == null)
        {
            childFolders = DocumentEntities.Folders.Where(x => x.ParentFolderID.Equals(folderId)).ToList();
        }
        else
        {
            childFolders = DocumentEntities.Folders.Where(x => x.ParentFolderID == folderId).ToList();
        }

        //  If there are no childFolders, then you've hit the bottom of this branch.  Return this folder.
        if (!childFolders.Any())
        {
            finalList.Add(DocumentEntities.Folders.SingleOrDefault(x => x.FolderID == folderId));
        }
        else
        {
            foreach (var childFolder in childFolders)
            {
                finalList.AddRange(GetFolderChildren(childFolder.FolderID, pageName));
            }

            //  Now that you've gone through this folders children, add this folder
            finalList.Add(DocumentEntities.Folders.SingleOrDefault(x => x.FolderID == folderId));
        }

        return finalList;
    }

當folderID為null或int時,它永遠不會到達foreach。 有任何想法嗎?

如果x.ParentFolderIDnull ,則您將無法通過Equals方法訪問它,因為它為null。 嘗試將整個值與參數進行比較,因為它的類型相同,例如

childFolders = Entities.Folders.Where(x => x.ParentFolderID == folderId).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM