我需要一个函数来比较两个不同文件结构之间的差异,并将该差异作为文件结构返回.
我有一个类"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或直接算法(假设树可以有很多级别).
是的.您可以只比较两个包含文件路径的字符串的数字:
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方法来保存第二个可枚举中缺少的第一个可枚举项.