【发布时间】:2015-08-10 01:54:14
【问题描述】:
我正在尝试对两个 XML 文档执行 leftOuterJoin,但是我目前使用的方式似乎从 fileone 返回了一些奇怪的重复部分(在下面的代码中解释)。我尝试了很多方法,但无法弄清楚如何做到这一点。有人可以帮忙解决这个问题吗?提前谢谢了!
文件:
<fileone>
<Book BookID="dog"> Dog </Book>
<Book BookID="cat"> Cat </Book>
</fileone>
文件二:
<filetwo>
<Edition BID="cat" OrderID="100"> about cat</Edition>
<Edition BID="cat" OrderID="200">more about cat</Edition>
</RightSeq>
我正在寻找的是(bookID=BID 上的左外连接):
<item>
<Book BookID="cat"> Dog </Book>
</item>
<item>
<Book BookID="cat"> Cat </Book>
<Edition BID="cat" OrderID="100"> about cat</Edition>
</item>
<item>
<Book BookID="cat"> Cat </Book>
<Edition BID="cat" OrderID="200"> more cat</Edition>
</item>
我的(错误)代码:
var result = from a in fileone.Descendants()
join b in secondxdoc.Descendants()
on (string)a.Attribute("BookID") equal (string)b.Attribute("BID") into inners
from ele in inners.DefaultIfEmpty()
select new XElement("item", new XElement(a), ele == null ? null : new XElement(ele));
var output = new XElement("LeftOuterJoin", result);
}
当前错误结果:
<item>
<fileone>
<Book BookID="dog"> Dog </Book> // this entire <fileone> bit is unwanted
<Book BookID="cat"> Cat </Book> //I don't know what I've done wrong
</fileone>
</item>
<item>
<Book BookID="cat"> Dog </Book>
</item>
<item>
<Book BookID="cat"> Cat </Book>
<Edition BID="cat" OrderID="100"> about cat</Edition>
</item>
<item>
<Book BookID="cat"> Cat </Book>
<Edition BID="cat" OrderID="200"> more cat</Edition>
</item>
【问题讨论】:
标签: c# xml linq join duplicates