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