【发布时间】:2013-11-26 21:52:29
【问题描述】:
我有两个具有相同架构/结构但数据不同的 XML 文件。我正在尝试使用 Linqpad (Linq to XML) 来查找两个文件之间的差异。
这是我的代码...
XElement FILE1 = XElement.Load (@"..\FILE1.XML");
XElement FILE2 = XElement.Load (@"..\FILE2.XML");
var orders = from file1 in FILE1.Descendants("Players").Elements("Player")
select new {
name=new {
firstName=file1.Element("FirstName"),
lastName=file1.Element("LastName")
}
};
var orders2 =
from file2 in FILE2.Descendants("Players").Elements("Player")
select new {
name=new {
firstName=file2.Element("FirstName"),
lastName=file2.Element("LastName")
}
};
var matchingResults = from i in orders from j in orders2 where (i.name.firstName==j.name.firstName && i.name.lastName==j.name.lastName)
select i;
matchingResults.Dump()
最后一个 Dump() 返回 0 个结果。我知道这两个文件中有匹配的数据。
编辑我忘了提到,如果我转储每个查询的结果,我会得到两个序列的结果(非常相似)。
我也尝试过这里显示的方法...
Compare two xml and print the difference using LINQ
(将文件组合成一个序列,然后进行比较)但我得到相同的结果...0个结果。
这种方法似乎也可以在第一个订单序列上创建笛卡尔积。
我只想从文件中找到匹配或缺失的节点。
我在这里错过了什么?
【问题讨论】:
-
xml结构是什么样的?
标签: linq linq-to-xml linqpad