2015-06-27 45 views
0

我需要使用查詢像LINQ的executeQuery陣列參數

SELECT * FROM Table WHERE field IN (1,2,3) 

我C#中使用此

var data = context.ExecuteQuery<Some>("SELECT * FROM Table WHERE field IN {0}", arrayParam); //for example arrayParam has 1,2,3 

當我用這個,做工精細

var data = context.ExecuteQuery<Some>("SELECT * FROM Table WHERE field = {0}", 1); 

但與PARAM崩潰

as passed the array of p arameters?

注:真正的查詢是它要複雜得多,因爲這個原因使用本機查詢,而不是LINQ

+0

有沒有這樣的事情很不幸,你將不得不分別通過每個參數使用命名參數,或使用字符串連接 – BrokenGlass

+0

「在哪裏(場= 1或場= 2或字段= 3或場= 4)「你可以很容易地在C#中生成where子句字符串。很多這樣做的方式。可以幫助。 – jdweng

回答

2

如果你把它當作一個SQL參數(以防止SQL注入)之前,驗證您的數組,你可以做是這樣的:

var data = context.ExecuteQuery<Some>("SELECT * FROM Table WHERE field IN ({0})", string.Join(",",arrayParam.Select(n=>n.ToString())));