2015-09-30 77 views
2

我從遷移ObjectContext中我的項目的DbContext和我有這句話的一個問題:遷移到的DbContext LINQ where子句字符串參數

var query = db.Inventory.Where("it.IdState in {" + states + "}"); 

這適用於ObjectContext的,但現在我得到在編譯時錯誤:

Error CS1503 Argument 2: cannot convert from 'string' to 'System.Linq.Expressions.Expression<System.Func<Test.DAL.Inventory, bool>>' 

似乎並沒有被更多鈔票要做到這一點,現在,我tryied揭露的ObjectContext做到這一點,但我無法找到路

任何想法? 謝謝!

回答

6

您可以(也應該)將這些參數強制鍵入爲表達式。

var query = db.Inventory.Where(x => states.Contains(x.IdState)); 
3

你有種需要扭轉它

var query = db.Inventory.Where(it => states.Contains(it.IdState)); 
2

Where的參數必須是制定一個條件的委託。替換

"it.IdState in {" + states + "}" 

it => states.Contains(it.IdState) 

使用lambda表達式來解決這個問題。