2017-06-16 9 views
1

linqを使って2つのXML列を比較して、それらが等しいかどうかを判断するのはとても難しいとは思いません。これは青い月の中で私のシステムで一度しか起こりませんが、私はそれが起こったときにそれを説明したいと思います。LinqはXMLの値を比較します

私はまっすぐな比較を試み、.ToString()メソッドとの比較を試みました。私はこれを追加しようとしている

from al in ActivityLogs 
join a in Activities on al.ActivityId equals a.ActivityId 
join dva in AllDVAudits on al.ActivityLogId equals dva.ActivityLogId 
where al.ProfileId == ProfileID 

Where al.ProfileId == ProfileID 
    && al.OldData != al.NewData 

そしてこの

Where al.ProfileId == ProfileID  
&& al.OldData.ToString() != al.NewData.ToString() 

私が作ったの試みの両方が...

私の元LINQ文を無用のエラーを投げました更新:私も自分自身に "ねじを締めて、XMLを取り戻し、C# "で操作(比較)します。私はデータ・サーバーからXMLを戻して、それらが等しいかどうかを確認する必要はありませんが、少なくともこの時点では値を比較できます。

linqを使用して2つのXML列が等しいかどうかを判断する方法はありますか?

洞察が非常に高く評価されています。

+1

sqlで比較しますか? –

+0

私は本当に可能な限りlinqを使用したいと思いますが、sqlを使用してvarcharにキャストできます。 –

+0

ところで、どうしてここで質問が起きたのですか? :-) –

答えて

2

解決方法1: Iあなたは計算列を作成することができますすることができ、LINQのSQLを実行するには、一例で、キャストとのSQL Serverのvarchar(2000)にあなたのXML列であり、あなたのLINQ

ソリューション2に、この列を使用します:

は、溶液4(その仕事ならば、私はKWOいけない)このビューにあなたの完全なクエリとLINQを持つビューを作成します : varchar型に変換列を持つビューを作成し、解決策3

LINQの

に使用

var all = from bm in context.MYTABLEs 
       select new { name = bm.SPP_USER_ID, xml = (string)bm.SPP_BOOKMARKS_XML }; 

    var docs = from x in all 
       select XDocument.Parse(x.xml); 

    var href = from h in docs 
       select h.Descendants("href"); 
+0

元のlinq文を私の答えで修正するにはどうすればよいですか?私が見ることができるサンプルやリファレンスがありますか? –

+1

エンティティフレームワーク+ linqを使用して、SQLにしませんか? – Esperento57

+0

はい、私は正しいと信じています。 EF6ラッパーを使用してEF4を使用しています。 –