2016-06-07 60 views
2

我有一個字符串列表:List<string> NameList = new List<string>()項目字符串的SQL語句的列表,列表

名稱列表包含以下項目: John DoeTom JonesBob Sinclair

我希望以這些項目添加到單個連接的字符串,如下所示:

isnull(piv.[John Doe],0) [John Doe], 
isnull(piv.[Tom Jones],0) [Tom Jones], 
isnull(piv.[Bob Sinclair],0) [Bob Sinclair] 

以上是將使用我正在編寫的程序構建的SQL語句。我不需要執行SQL,只需以上述格式將連接的名稱列表作爲字符串返回即可。

+0

什麼*正是*你以爲'ISNULL(PIV。[],0)'來做?這應該是函數調用的結果嗎? –

+0

你能否進一步解釋,我不確定我是否明白你想要做什麼。 –

+0

如果你所要做的只是構建一個字符串來複制/粘貼,你可以使用正則表達式而不是c#。 http://regexr.com/3divk – gunr2171

回答

8

這很容易做一點LINQ和$字符串插值算子。試試這個:

var result = string.Join(
    $",{Environment.NewLine}", 
    NameList.Select(x => $"isnull(piv.[{x}],0) [{x}]")); 

string.Join將所有的結果結合每個元素後的逗號和換行符。

NameList.Select將每個元素投影到您需要的格式。

Here's a fiddle具有完整的工作示例。它創建這樣的輸出:

 
isnull(piv.[John Doe],0) [John Doe], 
isnull(piv.[Tom Jones],0) [Tom Jones], 
isnull(piv.[Bob Sinclair],0) [Bob Sinclair] 
5
var output = String.Join(",\n", NameList.Select(n => 
    string.Format("isnull(piv.[{0}],0) [{0}]", n))); 

String.Join將字符串列表和加入他們與你想給它任何分隔在一起。 String.Format通過用n代替{0}來簡單地格式化字符串。所以,在我們列表中的每個字符串,我們使用Select選擇格式的字符串,然後我們加入該集合與,\n