【问题标题】:Create ReadOnly Property of CSV String vb.net创建 CSV 字符串 vb.net 的只读属性
【发布时间】:2014-07-12 19:55:39
【问题描述】:

获取 List(Of objects) 并添加 ReadOnly 属性以显示对象属性之一的 csv 列表的最佳方法是什么?有没有一种通过指定“名称”将该列表转换为字符串的好方法。


对象 = 新项目()
对象.ID = 1
Object.Name = "测试"
li.Add(对象)

对象 = 新项目()
对象.ID = 2
Object.Name = "测试 2"
li.Add(对象)

对象 = 新项目()
对象.ID = 3
Object.Name = "测试 3"
li.Add(对象)



我认为需要在此处完成 for each 还是有更好的方法来执行此操作?

从列表值中返回“Test, Test 2, Test 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

【问题讨论】:

    标签: vb.net class properties


    【解决方案1】:

    我有这个链接要分享,解决方法类似,可能需要几个星期。从 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)
    

    【讨论】:

    • 看起来 stringbuilder 可以工作。我最终使用 sb.ToString().TrimEnd(",") 删除单行中的尾随逗号。
    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2010-11-10
    相关资源
    最近更新 更多