我有一些代码执行了一个Neo4j cypher查询,返回类型为FolderObject
的IEnumerable
,如下:
public IEnumerable<FolderObject> GetChild(string parentId)
{
IEnumerable<FolderObject> childNode = null;
var query = GraphConnection.Cypher
.Start(new { n = Node.ByIndexLookup("node_auto_index", "ObjectId", parentId) })
.Match("(n)-[r:HAS_FOLDER]->(b)")
.Where("b.ParentId = n.ObjectId")
.Return<FolderObject>("b");
childNode = query.Results;
return childNode;
}
FolderObject
的形式如下:
public string ObjectId { get; set; }
public string ParentId {get; set;}
public List<GraphObject> Children { get; set; }
我有一个方法,它运行良好:
public List<FolderObject> GetChildren(string repositoryId, string folderId)
{
List<FolderObject> items;
QueryOperations query = new QueryOperations(GraphConnection);
var queryResult = query.GetChild(folderId);
string childId = null;
if (queryResult != null)
{
foreach (var item in queryResult)
{
childId = item.ObjectId;
items = new List<FolderObject>();
items.Add(item);
var nextChild = GetChildren(repositoryId, childId);
}
}
else
{
throw new Exception("The Folder with Id: " + folder + " could not be found.");
}
return items
}
现在问题出现在我尝试递归这样做时。我的需求是获取最顶层文件夹并将其添加到列表中,然后获取下面的次级文件夹并将其作为子文件夹添加进去。接着重复此过程直至没有更多子文件夹。
结构如下:
-Folder
-Folder
-Folder
-Folder
并将此结构作为列表返回?
这是Json
{
"ParentId": "0",
"ObjectId": "1",
"children": [
{
"ParentId": "1",
"ObjectId": "2",
"children": [
{
"ParentId": "2",
"ObjectId": "3"
}
]
}
]
}