2011-09-01 117 views
1

我有一個List如何在.add之後的每個列表元素周圍添加引號?

private List<string> additionalHeaderMeta = new List<string>(); 

,我想它輸出到一個CSV文件。所有的工作發現,但事實證明,我添加到additionalHeaderMeta中的一些元素可能在他們有逗號,這顯然混淆了一個CSV文件。如何在元素添加後在每個元素周圍添加引號?

我試圖

additionalHeaderMeta.Select(i => "\"" + i + "\""); 

但沒有運氣。

+2

你是什麼意思沒有運氣? – leppie

+1

也許'additionalHeaderMeta = additionalHeaderMeta.Select(i =>「\」「+ i +」\「」)。ToList();'會更幸運嗎? – jball

回答

2

如果您想修改列表,只需循環即可。

for (int index = 0; index < list.Count; index++) 
    list[index] = /* modify item here */ 

你做了什麼是創造條件,懶洋洋地評估一個查詢定義,但實際上你會需要遍歷查詢。如果您希望實際上不修改列表,請使用查詢,但只需將數據投影到修改的表單中。

var query = additionalHeaderMeta.Select(i => "\"" + i + "\""); 
foreach (var item in query) 
    do whatever 

要簡單地替換另一個列表完全,在查詢中使用ToList()和結果分配回原來的名單。

additionalHeaderMeta = additionalHeaderMeta.Select(i => "\"" + i + "\"").ToList(); 
+0

有沒有一個光滑的單班輪的方法呢?我不知道爲什麼我馬上就沒有想到你的想法......我剛剛開始嘗試學習新技術。 – Brad

+0

@Brad,你可以說'list = list.Select(whatever).ToList();'用另一個修改元素列表替換你現有的列表。查看更新。 –

+0

啊是的。我喜歡! – Brad

1

您的示例代碼:

additionalHeaderMeta.Select(i => "\"" + i + "\""); 

會工作得很好。它將返回一個新的列表,並添加引號。

它會不是修改現有列表 - 是你的困惑來自哪裏?

+0

so ...'additionalHeaderMeta = additionalHeaderMeta.Select(i =>「\」「+ i +」\「」);'會做到嗎? – Brad

+1

不要忘記'.ToList()'。 – jball

+0

'Select'返回'IEnumerable ',您無法將其重新分配到您的'List '變量中。所以如果你想重用相同的變量,是的,你需要添加一個'.ToList()'。但是,如果您只是想在引用列表上操作,則可能不需要將其分配回您的'additionalHeaderMeta'變量。 –

相關問題