2017-09-24 59 views
0

我试图创建一个vb.net应用程序,它可以将病人的病史保存到数据库中。但我坚持我如何将所有列表框项目保存到单个行(使用逗号作为分隔符)。
我尝试使用此代码,但它不仅节省了最后一条记录:
如何保存所有列表框项目以逗号(“,”)作为分隔符访问数据库

Dim diagnosis As String 
     For i As Integer = 0 To txtDiagnosis.Items.Count - 1 
      diagnosis = String.Concat(txtDiagnosis.Items(i), ",") 
     Next 
      'Insert Query Here 

我也希望最后一个记录不具有后一个逗号。在此先感谢

+0

这违反了[第一范式(收藏https://en.m.wikipedia.org/wiki/First_normal_form)。改为使用1:n关系的第二个表。 – Heinzi

+0

@ Heinzi你是什么意思它违反了第一范式?我只是想挽救与逗号(,)作为分隔符的所有列表框项目数据库,例如我在我的列表框 项目1 项目2 项目3 3项我想这些项目数据库保存为: 项目1,项目2,项目3 – ronstoppable

+0

你读过我链接到的维基百科文章吗? – Heinzi

回答

0

使用String.Join函数。 String.Join(Of T) Method

Dim diagnosis As String = String.Join(", ", txtDiagnosis.Items) 

您可以将项目转换为字符串的集合

Dim allDiagnosis = txtDiagnosis.Items.Select(Function(item) item.ToString()) 
Dim diagnosis As String = String.Join(", ", allDiagnosis) 

对于ListBox.Items你需要显式强制征收对象

Dim allDiagnosis = txtDiagnosis.Items. 
           Cast(Of Object)(). 
           Select(Function(item) item.ToString()) 
Dim diagnosis As String = String.Join(", ", allDiagnosis) 
+0

我得到这个错误使用该方法(不支持延迟扩展方法) – ronstoppable

+0

@ronstoppable,什么类型的'txtDiagnosis.Items'? – Fabio

+0

我不知道这是什么意思。但即时通讯在Visual Studio 2010上使用列表框。我已经尝试了上面的代码,但它给了我这个错误: '参数'数字'的参数没有指定'公共功能STR(数字作为对象)作为String'.'和' '选择'不是'System.Windows.Forms.ListBox.ObjectCollection'的成员。“# – ronstoppable

相关问题