[英]How Would I Write This In LINQ2SQL?
我正在慢慢地從MySQL移植一個應用程序以使用Linq2Sql-但是一個查詢使我有些困惑。
SELECT * FROM Pages DomainID = @reportid AND(PageContent REGEXP'display:[\\ t] * none')> 0按URL排序
關於如何使用Linq2SQL編寫類似內容的任何想法? 它的REGEXP有點讓我難過嗎?
LINQ to SQL沒有內置的方法,但是您還有其他兩種選擇。 首先是將字符串作為內存對象加載,您可以將Regex函數應用於 。 我不太喜歡這樣做,因為看起來您可能會得到一些非常大的字符串來進行匹配。
第二種選擇是按此處所述利用SQL CLR。 這有效地使您可以創建存儲過程,該存儲過程鏈接到您創建的CLR方法。 每當您在LINQ to SQL上下文中調用該方法時,該方法都會轉換為存儲過程調用。 然后使用如下查詢:
var q = from p in context.Pages
where p.DomainId == reportId &&
RegExMatch(p.PageContent, "display\:[ \t]*none")
select p;
為什么不使用LINQ返回與reportid匹配且包含'display:'的項目,以最大程度地減少從服務器返回的數據量,然后在客戶端使用regex過濾該列表?
var query = Pages.Where( p => p.DomainId == 1 && p.PageContent.IndexOf("display:") > 0).OrderBy( o => o.URL );
var regex = new Regex(@"display\:[\t]*none");
foreach (var page in query)
{
if( regex.IsMatch(page.PageContent) )
{
// Do whatever...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.