比较int时Linq to Entities错误?一个价值观

Jas*_*son 1 c# linq entity-framework

我正在尝试编写一个遍历树的递归函数.我的实体'Folder'有两个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;
    }
Run Code Online (Sandbox Code Playgroud)

当folderID为null或者为int时,它永远不会到达foreach.有任何想法吗?

Fel*_*ani 5

如果x.ParentFolderIDnull,则您将无法访问该Equals方法,因为它为null.尝试将整个值与参数进行比较,因为它具有相同的类型,用于样本

childFolders = Entities.Folders.Where(x => x.ParentFolderID == folderId).ToList();
Run Code Online (Sandbox Code Playgroud)