簡體   English   中英

在cdata塊中搜索字符串

[英]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自動轉義傳遞給ContainsStartsWithEndsWith所有特殊字符,因此您無需使用[[] 嘗試:

vc.Url.Contains(">" + URL + "<") || vc.Url.Contains("cdata[" + URL + "]")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM