从预先存在的列表 VB.Net 生成对象属性列表



有了python背景,我已经习惯了使用这样的行

print(" ".join({x.name for x in my_list}))

哪里

{x.name for x in my_list}

是一个列表/数组,包含my_list中每个对象的 name 属性。

我希望在 VB.Net 中做类似的事情,我知道使用更长的代码段是可能的,例如:

Dim str1 = ""
For each item in myList
str1 &= item.name & " "
Next

但我更喜欢更简单的解决方案,因为我会做很多事情,而且我听说使用 LINQ 可以使用类似的表示法。

任何帮助将不胜感激。

我想你在谈论IEnumerable(Of T(。选择功能。可用于将一种类型的集合映射到另一种类型的集合。

Dim combinedNames As String = String.Join(" ", myList.Select(Function(item) item.Name))

所以相当于 python 在 vb.net 中的{x.name for x in my_list}将是

Dim names = myList.Select(Function(item) item.Name)
Dim builder = new StringBuilder()
For Each name in names
builder.Append(name)
builder.Append(" ")
Next
Dim allNames = builder.ToString()

请注意,Select函数返回IEnumerable(Of T)类型。

代码的 VB.NET 等效项是:

Debug.Print(String.Join(" ", From x In my_list Select x.Name))

编译时From x In my_list Select x.Name的"查询理解"形式与扩展函数形式my_list.Select(Function(x) x.Name)相同。 这取决于您使用哪种语法的偏好。

最新更新