2015-10-13 69 views
0

當您知道您想要查找的模式時,很容易在實體框架中執行ContainsStartsWithEndsWith查詢。但如何做相當於「LIKE [Column]」?LIKE列查詢

舉例來說,這是很容易:

Name LIKE '%Th' 

但是你如何做到這一點?其中前綴是一列。

Name LIKE [Prefix] 

我試圖使用SqlMethods並得到以下錯誤。

LINQ to Entities不識別方法'布爾Like(System.String,System.String)'方法,並且此方法不能轉換爲存儲表達式。

+0

我看不到這樣做的好處。當您編寫查詢時,只需確定何時使用Contains(相當於'LIKE'%...%'')或StartsWith(相當於'LIKE'...%'')或EndsWidth(相當於'LIKE' %...「)。 –

+0

這是模式實際存儲在特定列中的情況。所以我需要能夠在查詢中評估Like [Column]。 –

回答

0

我解決了這個問題,通過使用LINQ to Entities來取回我想要的數據集,然後使用LINQ to Objects來過濾數據。

我不認爲這是目前的方式有一個的LINQ to Entities查詢在數據庫服務器來解決......

... LIKE [column-name] 
0

首先,SqlMethods是在LINQ到SQL使用,而不是LINQ到實體。

你可以使用數據庫引擎過濾器(所以你不必拉首先在內存中的所有數據)的最好的是:

context.Entities.SqlQuery("SELECT * FROM EntityTable WHERE Name LIKE Prefix")