我有两个文档都很相似,但我需要找到一种优雅而有效的方法来比较这两个文件并返回Doc#1中Doc#2中不存在的值.
XML Doc#1
<ids>
<id>1</id>
<id>2</id>
<id>5</id>
<id>6</id>
<id>7</id>
<id>8</id>
<id>9</id>
</ids>
</ids>
Run Code Online (Sandbox Code Playgroud)
XML Doc#2
<ids>
<id>1</id>
<id>2</id>
<id>7</id>
<id>8</id>
<id>9</id>
</ids>
Run Code Online (Sandbox Code Playgroud)
如果我可以在id字段上加入这两个文件,我正在考虑使用linq.有没有更好的办法?我希望返回id#5和6.
这是我知道的一个示例,我只用小文件试了一下(File1.xml有20个项目,File2.xml有8个项目).
XDocument file1Doc = XDocument.Load("File1.xml");
XDocument file2Doc = XDocument.Load("File2.xml");
IEnumerable<string> file1Elements = from d in file1Doc.Descendants("Id")
select d.Value;
IEnumerable<string> file2Elements = from d in file2Doc.Descendants("Id")
select d.Value;
var difference = file1Elements.Except(file2Elements);
Run Code Online (Sandbox Code Playgroud)
或者,可能更符合您的要求:
XDocument file1Doc = XDocument.Load("File1.xml");
XDocument file2Doc = XDocument.Load("File2.xml");
IEnumerable<string> file2Elements = from d in file2Doc.Descendants("Id")
select d.Value;
var x = from include in file1Doc.Descendants("Id")
where file2Elements.Contains(include.Value) != true
select include;
Run Code Online (Sandbox Code Playgroud)
您可能还会在MSDN上查找101 LINQ示例.
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |