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.有任何想法吗?
如果x.ParentFolderID是null,则您将无法访问该Equals方法,因为它为null.尝试将整个值与参数进行比较,因为它具有相同的类型,用于样本
childFolders = Entities.Folders.Where(x => x.ParentFolderID == folderId).ToList();
Run Code Online (Sandbox Code Playgroud)