2012-12-17 74 views
0

我試圖創建一個列表值的字符串;我所想要實現的SQL語法至極是在更新查詢中使用:從一個普通的列表創建一個字符串

UPDATE TABLE SET COLUMN1 =X WHERE COLUMN2 IN ('A','B','C')

(A,B,C是我列表中的項目。)我怎樣才能做到這一點? 嘗試:

  string commaSeparatedList = _list.Aggregate((a, x) => a + ", " + x); 

,但它創造了我沒有撇號列表...

+0

如果您正在構建,將被處決警惕你可能會打開你的自我高達SQL注入攻擊SQL。例如,如果你的列表中的一個項目被稱爲「')或1 = 1; --'。我建議用更高層次的概述來開啓一個新問題,並且詢問你是否有更好的方法去做你想做的事情。 –

+0

解決這個問題的另一種方式是比構建SQL字符串更安全的方法是使用[Linq To Sql](http://msdn.microsoft.com/zh-cn/library/bb386976.aspx)來構建查詢您。 (打開一個新的問題,如果你需要幫助做Linq到SQL) –

+0

SQL注入現在不重要,但感謝您的意見:) – Sin5k4

回答

3

如果你的代碼給你,你想除了撇號到底是什麼,只要堅持一個

.Select(s => "'" + s + "'") 

_list。和.Aggregate...之間

6

您也可以使用String.Join Method代替:

string commaSeparatedList = string.Join(",", _list.Select(s => "'" + s + "'")); 
+0

加入是比聚合速度更快,不得不推薦這個。 – efkah

+0

那麼當'_list'中的某個成員包含值'')或1 = 1時,你會怎麼做? --'? –

+0

這是一個公平的觀點,'加入',有一個upvote。我剛剛進行了「最小代碼更改」。 – Rawling

0
string commaSeparatedList = "'"+_list.Aggregate((a, x) => a + "','" + x)+"'";