我的Microsoft SQL Server表的一列包含格式为XML的字符串
<root>
<de><![CDATA[something]]></de>
<fr><![CDATA[something]]></fr>
<it><![CDATA[something]]></it>
<en><![CDATA[something]]></en>
</root>
或
<root>
<de>something</de>
<it>something</it>
<fr>something</fr>
<en>something</en>
</root>
我需要提取包含某个单词的所有记录,无论是否有CDATA。
所以我用这种方式构建了LINQ中的where条件:
vc.Url.Contains(">" + URL + "<") || vc.Url.Contains("cdata[[]" + URL + "]")
如果searchtext匹配且没有CDATA,则where条件有效,我得到结果。
如果searchtext匹配并且有CDATA,那么where条件不起作用。
如果我通过SQL Server Management Studio执行查询:
where vc.Url like '%>something<%' OR vc.Url like '%cdata[[]something]%'
我获得了预期的结果。
如何以正确的方式编写where条件并通过SQL和LINQ获得相同的结果?
提前致谢!
答案 0 :(得分:0)
实体框架会自动转义传递到Contains
,StartsWith
和EndsWith
的所有特殊字符,因此您不需要使用[[]
。尝试:
vc.Url.Contains(">" + URL + "<") || vc.Url.Contains("cdata[" + URL + "]")