获取List(Of objects)和添加ReadOnly属性的最佳方法是什么,该属性显示对象的一个属性的csv列表?有没有一种方法可以通过指定“名称”将该列表转换为字符串。
实施例
对象=新项目()
Object.ID = 1
Object.Name =“测试”
li.Add(对象)
对象=新项目()
Object.ID = 2
Object.Name =“测试2”
li.Add(对象)
对象=新项目()
Object.ID = 3
Object.Name =“测试3”
li.Add(对象)
我想在每个人都需要在这里完成或有更好的方法来做这件事吗?
从列表值中返回“测试,测试2,测试3”
从本质上讲,这是我想要做的事情,但我想知道是否有更好的方法来做到这一点。:
Public ReadOnly Property ItemList() As String
Get
Dim returnvalue As String = String.Empty
If Items.Count > 0 Then
For Each Item In Items
returnvalue = returnvalue & Item.Name & ", "
Next
Return Left(returnvalue, returnvalue.Length - 2)
Else
Return ""
End If
End Get
End Property
答案 0 :(得分:0)
我有这个链接分享,解决方案是类似的,可能需要一些tweeks。从C#到VB的转换非常简单,可以向您显示进行一些更改的位置。 Write C# Lists of objects in CSV file
但是,我相信你的代码很好,除了你如何创建你的csv字符串。 我建议使用字符串生成器。这样,如果项目存在,则构建新行。否则,你没有。这将使您无需删除(左)最后插入的逗号。您还希望捕获列表中的最后一项,并在那里避免使用逗号。
作为一个例子:
Dim sb As StringBuilder
--if not last item then --
sb.AppendFormat ("{0},{1}",Item.Name,",")
--else this is last item--
sb.AppendFormat ("{0},",Item.Name)
我分享的链接是一个更好的解决方案。我的例子只是为了让你的方法更可靠。
或者,如果您将对象列表更改为数组或字符串列表...
Dim sampleList = New List(Of String)() From { _
"lala", _
"lulu", _
"lele" _
}
Dim data = String.Join(",", sampleList)