2015-03-03 42 views
0

以下是LINQSQL查詢?如何將解釋的linq查詢轉換爲本地linq查詢

Regex wordCounter = new Regex (@"\b(\w|[-'])+\b"); 
IEnumerable<MedicalArticle> sqlQuery = dataContext.MedicalArticles 
.Where (article => article.Topic == "influenza"); 
IEnumerable<MedicalArticle> localQuery = sqlQuery 
.Where (article => wordCounter.Matches (article.Abstract).Count < 100); 

Exception是因爲SQL服務器不支持正則表達式。我如何投IQueryable<T>IEnumberable<T>

在此先感謝。

+2

使用ToList()或AsEnumerable()類似sqlQuery.ToList()。Where(...) – Sarathy 2015-03-03 05:23:25

回答

1

您需要在SQL服務器上運行查詢,將結果作爲列表獲取,然後運行RegEx。我通過添加「.ToList()」來完成此操作。

var sqlResults = dataContext.MedicalArticles 
.Where (article => article.Topic == "influenza").ToList(); 

Regex wordCounter = new Regex (@"\b(\w|[-'])+\b"); 
IEnumerable<MedicalArticle> localQuery = sqlResults 
.Where (article => wordCounter.Matches (article.Abstract).Count < 100); 

如果這是生產代碼,我會考慮使用「LIKE」操作符手寫的SQL,而不是在客戶端使用正則表達式。