はあなたのループを交換してみてください:
このいずれかで
While (readerFirstName.Read())
SearchedName = readerFirstName("parteA")
CombinatedNames = CombinatedNames & " & " & SearchedName
End While
:
Dim names As New List(Of String)()
While (readerFirstName.Read())
names.Add(readerFirstName("parteA"))
End While
CombinatedNames = String.Join(" & ", names)
ここでの主なアイデアは、1回の操作で単一の名前を連結するString.Join
methodを使用することです。このメソッドはコレクションに作用するので、最初に単一のアイテムをコレクションnames
に読み込む必要があります。
この方法は、決して最初または最後の後にする前に、区切り文字列に" & "
間の項目を追加するために世話をしますので、あなたがあなたの空のアイテムを持っていない限り、あなたは、先頭または末尾のセパレータ(で終わるません。リスト)。
P.S:あなたはreaderFirstNames
から読み込まれます、事前にどのように多くの名前を知ってしまった場合、あなたは(capacity
パラメータとして)List(Of T)
コンストラクタに名前の数を渡すことで、私の提案コードのメモリ使用量を最適化することができます。あなたはに含まれているが、他の回答それに
While (readerFirstName.Read())
SearchedName = readerFirstName("parteA")
If Not isNullOrEmpty(CombinatedNames) Then
CombinatedNames = CombinatedNames & " & " & SearchedName
Else
CombinatedNames = SearchedName
End If
End While
ソリューションは非常によく働いたし!!定義されていない数のアイテムの配列を作成する方法についてはわかりませんでした。私はどのくらいのアイテムが各ループにあるのか分かりませんが、データベースは小さく、おそらく1000個以上のアイテムなので、メモリは問題ではないと思います。 – fedeteka