【发布时间】:2014-09-10 23:39:10
【问题描述】:
我正在尝试编写一个遍历树的递归函数。我的实体“文件夹”具有 ParentFolderID 和 FolderID 两个属性。如果文件夹位于根级别,则其 ParentFolderID 为空。我创建了一个递归函数,它接受参数 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。有什么想法吗?
【问题讨论】:
-
您应该删除多余的
catch子句。 -
我同意你的观点@YuvalItzchakov,我把它放在那里看看抛出了什么错误。
标签: c# linq entity-framework