2016-02-28 48 views
0

在Microsoft SQL Server Management Studio中我運行下面的查詢:C#實體框架db.Database.SqlQuery SQL LIKE返回不同的行到SQL Server Management Studio中

SELECT [shop_name] 
FROM [vShop] 
WHERE [shop_name] LIKE '%p%' 

我回來3個結果:

shop_name 
--------- 
Phase Eight 
shop 7 
8th shop 

當運行在C#下面,我得到以下2個結果,當我期望得到同樣的3如上:

shop_name 
--------- 
shop 7 
8th shop 

這是使用實體框架的C#代碼錯誤地僅得到2結果

sQ += "SELECT [shop_name] AS name "; 
sQ += "FROM vShop "; 

SqlParameter q1 = new SqlParameter("q1", "%"+q+"%"); 
object[] parameters = new object[] { q1 }; 

rtn = db.Database.SqlQuery<shopB>(sQ + " WHERE [shop_name] like @q1", parameters).Skip(iSkip).Take(iTake).ToList(); 

我可以看到它有事情做與像通配符條款,但不能找到一個解決方案,以獲得正確的3個結果C#。你爲什麼不使用它的功能 -

如果您使用實體框架的任何幫助將是巨大的感謝

+2

檢查'iSkip'和'iTake'值。附:用現代IDE命名變量是否真的需要「匈牙利符號」風格? – Fabio

回答

1

?爲什麼要執行「原始」ADO.NET查詢?將簡單得多只運行一個真正 LINQ到實體查詢:

using (var ctx = new YourDbContextClass()) 
{ 
    var results = ctx.vShops.Where(x => x.shop_name.Contains("p")); 
} 

應該返回那些相同的3行如預期,我想

相關問題