使用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也有类似的符号。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我想你在谈论IEnumerable(Of T).Select功能。您可以将其用于将一种类型的集合映射到另一种类型的集合。
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
函数返回IEnumerable(Of T)
类型。
答案 1 :(得分:1)
您的代码的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)
相同。这取决于您的偏好,使用哪种语法。