Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq比较XML值_C#_Xml_Linq - Fatal编程技术网

C# Linq比较XML值

C# Linq比较XML值,c#,xml,linq,C#,Xml,Linq,我不敢相信,使用linq比较两个XML列是否相等会如此困难。这种情况在我的系统中只会发生一次,但我想在发生的时候解释一下 我尝试了直接比较,并尝试与.ToString()方法进行比较。我的两次尝试都犯了一个无用的错误 我最初的linq声明: from al in ActivityLogs join a in Activities on al.ActivityId equals a.ActivityId join dva in AllDVAudits on al.ActivityLogId equ

我不敢相信,使用linq比较两个XML列是否相等会如此困难。这种情况在我的系统中只会发生一次,但我想在发生的时候解释一下

我尝试了直接比较,并尝试与.ToString()方法进行比较。我的两次尝试都犯了一个无用的错误

我最初的linq声明:

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()
更新:我还对自己说:“去他妈的,我会把XML带回来,用C#操作它(比较它)。”。我讨厌从我的数据服务器带回XML,只是为了看看它们是否相等,但至少我可以在这一点上比较这些值

是否有一种方法可以使用linq确定两个XML列是否相等?

非常感谢您的洞察力。

解决方案1: 如果您使用LINQSQL,可能您可以创建一个计算列is SQL Server,通过示例将XML列转换为varchar(2000),并将此列用于Linq

解决方案2: 使用convert column into varchar和use into Linq创建一个视图

解决方案3: 使用完整的查询创建一个视图,并将linq导入该视图

解决方案4(如果有效,我不知道):


你想在sql中进行比较吗?我真的很想使用linq,如果可能的话,我可以很容易地使用sql将其转换为varchar。顺便问一下,一个问题是如何在这里投票的?:-)我将如何在我的答案中修改我原来的linq语句?你有我可以查看的样品或参考资料吗?是的,先生,我相信这是正确的。我们正在使用EF4和EF6包装器。在我的解决方案1中,我建议在您的数据库中创建一个计算列=to cast(columnxml作为varchar(2000)),刷新您的模型EF并将此计算列用于您的linqI可能会在某个点上对此进行尝试,因为现在我将把它带回来并在C#中进行比较。
    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");