2012-08-24 33 views
0

的端部修整:無法從串

foreach (String fromList in columns) 
{ 
    query += "`" + fromList + "`,"; 
} 
query.TrimEnd(','); 

逗號不從字符串修整。

我在做什麼錯?

+0

建設有串聯的查詢。偶爾需要,通常是錯誤的。 –

+0

當然,解決這個問題的一般方法是使用['String.Join'](http://msdn.microsoft.com/zh-cn/library/57a79xd0.aspx),它在每個字符串之間插入分隔符被連接在一起。在這裏稍微複雜一點,首先用字符來包裝每個字符串,但通常比構建完整的字符串更好,然後重新修改它以刪除字符。 –

回答

10

TrimEnd返回新的字符串。您需要:

query = query.TrimEnd(','); 
+0

工作感謝你。我想知道爲什麼Visual Studio 2010沒有指出錯誤。 – Grant

+1

@ user1600684因爲你對'TrimEnd'的調用是有效的。無論你是否對結果做了些什麼都不是VS通常不會提醒你的。 – Icarus

+1

爲什麼你會期望一個錯誤?你的代碼沒有語法錯誤。 – Pete

1

TrumEnd返回一個字符串。你把它分配給一個變量?

0

字符串是不可變的。如果你想申請TrimEnd後的結果,你必須是結果分配給一個變量:

foreach (String fromList in columns) 
{ 
    query += "`" + fromList + "`,"; 
} 
query = query.TrimEnd(','); 

在這裏,我分配回自己。


當然,更好的將是這樣的:

query = String.Join(",",fromList.Select(a=>"`" + a + "`")); 

,而不是循環+編輯。

0

使用下面的例子:

var trimmed = query.TrimEnd(','); 
Console.WriteLine(trimmed); 
0

應該

foreach (String fromList in columns) 
{ 
    query += "`" + fromList + "`,"; 
} 
query = query.TrimEnd(','); 
3

字符串是不變的,所以你需要存儲從TrimEnd返回值。

query = query.TrimEnd(','); 

雖然有做這更簡單的方法:

var query = String.Join(",", columns.Select(fromList => String.Format("`{0}`", fromList))); 
+1

只需要一個註釋,就需要.net 3.5中的lambda需要.ToArray() – LarsTech

+0

啊,是的,我忘記了這一點。只有.NET 4和更新版本纔有一個String.Join,它直接接受'IEnumerable '。 – BAF