2012-05-28 62 views
0

我得到了以下的代碼:ExecuteStoreQuery和 「WHERE IN({0})

string query = "select * from dbo.Personnel where PersonnelId in ({0})"; 
string param = "1, 2"; 
var test = model.ExecuteStoreQuery<Personnel>(query, param).ToList(); 

我得到以下錯誤:」 轉換轉換爲nvarchar值 '1',2' 爲int數據類型時失敗。 」 ......

有誰知道如何解決這個問題?我要的是select * from dbo.Personnel where PersonnelId in (1, 2)但數字可以是任意數字...

+0

我相信,因爲你不逃「」字符它試圖整個字符串轉換 - 也許用‘1 \ 2’嘗試。 – t3hn00b

+0

這是什麼語言?此外,它不起作用,因爲你傳遞* single * * string *參數,期望SQL以某種方式決定將它分成* multiple * * int *參數 - 你知道任何*行爲? –

回答

0

不要發送參數去ExecuteStoreQuery,只是param

取代 {0}
string param = "1, 2"; 
string query = string.Format("select * from dbo.Personnel where PersonnelId in ({0})", param); 

string query = "select * from dbo.Personnel where PersonnelId in ({0})"; 
query = query.Replace("{0}",param); 

var test = model.ExecuteStoreQuery<Personnel>(query).ToList();