0

C# のコード ビハインドから SQL データベースの XML 列をクエリしています。一意のノードのみのリストを取得しようとしています。

ItemAttributeテーブルには、XML タイプの列に対応する多数の ItemCodes(PK)があります。

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からノードに取得するためのよりクリーンな方法はありますか?

4

1 に答える 1

0

を使用する必要がありEqualityComparerますXNode

IEnumerable<XNode> nodes = (from x in xml.Nodes()
                        select x).Distinct(XNode.EqualityComparer);
于 2013-06-20T11:47:14.790 に答える