C# Linq比较XML值
我不敢相信,使用linq比较两个XML列是否相等会如此困难。这种情况在我的系统中只会发生一次,但我想在发生的时候解释一下 我尝试了直接比较,并尝试与.ToString()方法进行比较。我的两次尝试都犯了一个无用的错误 我最初的linq声明: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
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");