找到两个树结构之间的差异C#

jim*_*mbo 2 c# linq tree

我需要一个函数来比较两个不同文件结构之间的差异,并将该差异作为文件结构返回.

我有一个类"Element",它有属性ID和Children,ID是一个字符串,Children是Element的集合.

public class Element
{
  string ID { get; }
  IEnumerable<Element> Children { get; }
}
Run Code Online (Sandbox Code Playgroud)

现在,假设我有以下元素结构:

Structure A                Structure B
  - Category 1              - Category 1
      - Child X                - Child X
      - Child Y                - Child Z
  - Category 2
Run Code Online (Sandbox Code Playgroud)

我想返回一个结构,告诉我结构A中存在哪些元素但结构B中缺少哪些元素,如下所示:

Structure Diff
  - Category 1
       - Child Y
  - Category 2
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用LINQ或直接算法(假设树可以有很多级别).

Mar*_*nko 5

是的.您可以只比较两个包含文件路径的字符串的数字:

Category 1\
Category 1\Child X
Category 1\Child Y
Category 2\

Category 1\
Category 1\Child X
Category 1\Child Z
Run Code Online (Sandbox Code Playgroud)

有了这两个枚举,你可以调用Enumerable.Except方法来保存第二个可枚举中缺少的第一个可枚举项.