【发布时间】:2017-07-10 12:32:49
【问题描述】:
我的应用程序中有一个树结构,其中包含用户的分层数据。
public class User {
//a lot of properties here like Id, Name, Last Name, etc.
public IEnumerable<User> Employees {get;set;}
}
现在我需要用新项目替换此树中的某些记录。
var changedUsers = GetChangedUsers();
// Replace all changed user fields in original hierarchy
// (only FirstName, LastName, etc. without touching Employees field)
有没有优雅的方法来实现这一点?
编辑:
我尝试使用递归循环,但更新记录时卡住了。
private void ReplaceUserInHierarchy(User modifiedUser, List<User> users)
{
foreach (var user in users)
{
if (user.Id == modifiedUser.Id)
{
//we should update here somehow
return;
}
ReplaceUserInHierarchy(modifiedUser, user.Employees);
}
}
【问题讨论】:
-
需要什么程度的优雅?扁平化层次结构和编辑每个匹配的用户是否足够优雅?
-
这是讽刺吗?
-
@Gab 扁平化层次结构并加入
changedUsers -
@Gab 完全正确。您的问题缺少主要部分 - 显示您尝试解决此任务的代码以及您无法解决的问题描述(错误或不正确的结果)
-
@tchelidze - 我们该怎么做?
标签: c# .net tree tree-traversal