C# 如何比较两个递归列表
我试图比较两个通用列表,并找出它们之间的差异。这些列表是递归的,因此一个分支可能有许多子级,以此类推。我想查找新的、更新的和删除的项目。我认为这是一个非常典型的问题,可能会有类似的问题,但是如果有,我找不到 所以我的列表是这样的(json格式,希望你能理解): 我还有一个基本结构相似的列表。我想找出不同点,例如,当某些元素丢失或有新块或某些块已更改时C# 如何比较两个递归列表,c#,recursion,C#,Recursion,我试图比较两个通用列表,并找出它们之间的差异。这些列表是递归的,因此一个分支可能有许多子级,以此类推。我想查找新的、更新的和删除的项目。我认为这是一个非常典型的问题,可能会有类似的问题,但是如果有,我找不到 所以我的列表是这样的(json格式,希望你能理解): 我还有一个基本结构相似的列表。我想找出不同点,例如,当某些元素丢失或有新块或某些块已更改时 我发现了非常相似的情况,但我认为它与递归无关。有人能帮我吗一个列表中的一个项目,您认为它的细节发生了什么变化(假设代码> ITEMID不会改变),
我发现了非常相似的情况,但我认为它与递归无关。有人能帮我吗一个列表中的一个项目,您认为它的细节发生了什么变化(假设代码> ITEMID<代码>不会改变),还是一个项目也被改变了,如果它的子项目也被添加/删除了?我认为你提到的链接也有递归。请参见那里的
Person
类的People
属性,People
是Person
的列表。还要注意,在回答中,SaveDifference
方法是一个递归函数,设计用于处理递归问题。因此,该链接可能是一个有效的参考,假设给出的解决方案有效,我认为我链接的示例无效。无法使用indexOf方法比较对象。我需要检查对象中的所有属性是否相似。我的真实对象有多个属性,我需要检查这些属性(int和string类型)。基于第一个答案的两个澄清。ItemId属性永远不会更改,但当我将新对象添加到列表中时,我没有它(因为我从db获得它)。因此,在这些情况下,“新”列表中有新对象,“旧”列表不包含该对象。
{
"Item": [{
"Name": "Nimi1",
"ItemId": "1",
"Item": [{
"Name": "Name1.1",
"ItemId": "2",
"ParentId": 1,
"Item": [{
"Name": "Name1.1.1",
"ParentId": 2,
"ItemId": "3",
"Item": []
},
{
"Name": "Name1.1.2",
"ParentId": 2,
"ItemId": "4",
"Item": []
}]
},
{
"Name": "Name1.2",
"ParentId": 1,
"ItemId": "5",
"Item": [{
"Name": "Name1.2.1",
"ItemId": "6",
"ParentId": 5,
"Item": []
}]
}]
}]
}