[英]Search string in cdata block
我的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 + "]")
如果搜索文本匹配並且沒有CDATA,則where條件起作用並且我得到結果。
如果搜索文本匹配並且有CDATA,則where條件不起作用。
如果我通過SQL Server Management Studio執行查詢:
where vc.Url like '%>something<%' OR vc.Url like '%cdata[[]something]%'
我獲得了預期的結果。
關於如何以正確的方式編寫where條件並通過SQL和LINQ獲得相同結果的任何想法嗎?
提前致謝!
Entity Framework自動轉義傳遞給Contains
, StartsWith
和EndsWith
所有特殊字符,因此您無需使用[[]
。 嘗試:
vc.Url.Contains(">" + URL + "<") || vc.Url.Contains("cdata[" + URL + "]")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.