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

Python 从预先存在的列表VB.Net生成对象属性列表,python,vb.net,linq,Python,Vb.net,Linq,有了python背景,我已经相当习惯于使用像 print(" ".join({x.name for x in my_list})) 在哪里 是一个列表/数组,包含my_列表中每个对象的name属性 我希望在VB.Net中执行类似的操作,我知道使用较长的代码段是可能的,如: Dim str1 = "" For each item in myList str1 &= item.name & " " Next 但我更喜欢一个更简单的解决方案,因为我会经常这样做,我听说有类似的

有了python背景,我已经相当习惯于使用像

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

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

我希望在VB.Net中执行类似的操作,我知道使用较长的代码段是可能的,如:

Dim str1 = ""
For each item in myList
   str1 &= item.name & " "
Next
但我更喜欢一个更简单的解决方案,因为我会经常这样做,我听说有类似的符号可以使用LINQ

如有任何帮助,我们将不胜感激。

我想您是在谈论功能。可用于将一种类型的集合映射到另一种类型的集合

Dim combinedNames As String = String.Join(" ", myList.Select(Function(item) item.Name))
因此,与vb.net中python的
{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
function return
IEnumerable(Of T)
type.

代码的VB.NET等价物是:

Debug.Print(String.Join(" ", From x In my_list Select x.Name))
编译时,“查询理解”表单
从my_列表中的x选择x.Name
,与扩展函数表单
my_列表中的x选择(函数(x)x.Name)
相同。使用哪种语法取决于您的偏好。

只是澄清一下,在扩展函数调用中查询“translated”,然后将对其进行编译。
Debug.Print(String.Join(" ", From x In my_list Select x.Name))