如何从集合中获取唯一节点- IEnumerable
本文关键字:IEnumerable XNode 节点 唯一 集合 获取 | 更新日期: 2023-09-27 18:19:16
我正在从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到节点?
应该用EqualityComparer
代替XNode
IEnumerable<XNode> nodes = (from x in xml.Nodes()
select x).Distinct(XNode.EqualityComparer);