我从C#中的代码查询SQL数据库中的XML列。我正在尝试获取仅有唯一节点的列表。
在表中,有许多ItemCodes(PK),每个ItemCodes都有一个对应的ItemAttribute
,它是XML类型列。
说XML文档中有10行和3个节点。我从下面使用的方法得到30个结果。我只想要返回唯一的节点,但由于每个节点都有唯一的数据,我会根据节点中值的唯一性返回任意数量的结果。
var data = (from x in Ctx.ItemAttributeDatas
select x).ToList();
var xml = from x in data
where x.AttributeData.Descendants() != null
select x.AttributeData as XElement;
IEnumerable<XNode> nodes = (from x in xml.Nodes()
select x);
如何做到这一点?我尝试使用.Distinct()
,但上面的问题也有相同的结果。
另外,有没有更简洁的方法可以将数据传输到xml到节点?
答案 0 :(得分:0)
您应该EqualityComparer
使用XNode
IEnumerable<XNode> nodes = (from x in xml.Nodes()
select x).Distinct(XNode.EqualityComparer);