Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何比较两个递归列表_C#_Recursion - Fatal编程技术网

C# 如何比较两个递归列表

C# 如何比较两个递归列表,c#,recursion,C#,Recursion,我试图比较两个通用列表,并找出它们之间的差异。这些列表是递归的,因此一个分支可能有许多子级,以此类推。我想查找新的、更新的和删除的项目。我认为这是一个非常典型的问题,可能会有类似的问题,但是如果有,我找不到 所以我的列表是这样的(json格式,希望你能理解): 我还有一个基本结构相似的列表。我想找出不同点,例如,当某些元素丢失或有新块或某些块已更改时 我发现了非常相似的情况,但我认为它与递归无关。有人能帮我吗一个列表中的一个项目,您认为它的细节发生了什么变化(假设代码> ITEMID不会改变),

我试图比较两个通用列表,并找出它们之间的差异。这些列表是递归的,因此一个分支可能有许多子级,以此类推。我想查找新的、更新的和删除的项目。我认为这是一个非常典型的问题,可能会有类似的问题,但是如果有,我找不到

所以我的列表是这样的(json格式,希望你能理解):

我还有一个基本结构相似的列表。我想找出不同点,例如,当某些元素丢失或有新块或某些块已更改时


我发现了非常相似的情况,但我认为它与递归无关。有人能帮我吗

一个列表中的一个项目,您认为它的细节发生了什么变化(假设代码> 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": []
            }]
        }]
    }]
}