我知道這可能是一個不好的例子,但在這種情況下,我的問題更多的是處理StringBuilder而不是我的SQL查詢的最好/最有效的方法本身,所以請多多包涵......通過遍歷列表創建新的StringBuilder,刪除最後一個元素
作爲一個例子來說明什麼,我希望獲得,假設我有一個數據庫表,所有這些都具有相同結構的大名單,並我想創建一個查詢來在一個查詢中從所有這些查詢中提取數據。
我想這樣做的方法是:
Dim MyTables As List(Of String) = {"Table1", "Table2", "Table3" ... "TableN"}.ToList
Dim SQLQuery As New StringBuilder
For Each tbl As String In MyTables
SQLQuery.AppendLine("SELECT [col1], [col2], [col3] FROM " & tbl)
SQLQuery.AppendLine("UNION")
Next
同樣,無視這是否是要做到這一點(雖然我很想知道是否有更好的方法最好的方式,但我不不想讓答案朝這個方向傾斜 - 在這種情況下,我更有興趣知道如何有效地處理StringBuilder)。
鑑於我這樣做的方法,我的StringBuilder都將有一個額外的UNION & vbCrLf
在它的結束,我需要刪除 - 我知道我可以使用的東西線沿線的做到這一點:
SQLQuery.Remove(SQLQuery.Length - ("UNION" & vbCrLf).Length, ("UNION" & vbCrLf).Length)
當然,我可以提高效率,但我的問題基本上是什麼是最好/最有效的方式來創建這樣一個使用循環的「串聯器」,因此,這是一個相當大的字符串,如果你以我的方式做了,它會被追加到最後?
我知道這個問題是用VB編寫的,但我在C#中的答案同樣適用。謝謝!!!
截斷只是'SQLQuery.Lenght - = 7;' – Steve
我認爲你所做的已經相當有效。在stringbuilder末尾移除給定長度的元素是有效的,並且AFAIK獨立於stringlength - 另外它只在循環結束時執行一次。 – Marwie