丢了,我有这样的LINQ的XML后裔正在对枚举
<root>
<item id="1" creator="me">
<childA>1</childA>
<childB>2</childB>
</item>
<item id="2" creator="me">
<childA>1</childA>
<childB>3</childB>
<childB>4</childB>
</item>
</root>
一个XML文档我试图找到重复的项目,然后再复制的重复项目子项的逻辑是这样
XDocument XmlRoot //whatever...you get the point
// Get item nodes
var items = XmlRoot.Descendants("item");
// Find duplicate items keys using creator attribute
var duplicateItemKeys = items.GroupBy(x => x.Attribute("creator").Value)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach(var duplicateItemKey in duplicateItemKeys)
{
// Get the duplicate item XML elements using the duplicate keys
var duplicateItems = items.Where(x => x.Attribute("creator").Value == duplicateToucheKey)
.OrderBy(xelement => xelement.Attribute("CreatedOn").Value);
}
这工作,但有一个问题后,当我尝试使用duplicateItems。任何时候它枚举(就像在一个foreach重复项),第一项失去了它的孩子的上下文。第二个就好了。
因此,例如,在后面的代码我说
var allItemB = new List<XElement>();
foreach (duplicateItem in duplicateItems)
{
allItemB.AddRange(duplicateItem.Descendants("childB"));
}
我想到“allItemB”包含在第一轮2,那么234在第二。什么最终发生的是,它仅包含34因为一旦duplicateItems阵列枚举的第一个的XElement失去它的孩子。
有谁知道如何解决这一问题?
什么是第一部分的期望的结果?它是作为一个XElement保留还是可以作为'孩子'字典,'连接值'? – 2012-07-07 14:40:23
理想情况下,我试图解析为重复的XML,然后再组装起来,并将其发送回数据库。 – farina 2012-07-10 16:43:43
什么被认为是重复的?重复的标签名称,值,属性名称,属性值? – 2012-07-10 17:33:45