Fer*_*ndo 1 .net linq vb.net anonymous-types
为什么匿名类型属性"Points"仍然具有值"0"?
Public Class Test
    Public Sub New(ByVal _ID As Integer)
        ID = _ID
    End Sub
    Public ID As Integer
End Class
Dim list As New List(Of Test)
list.Add(New Test(1))
list.Add(New Test(2))
list.Add(New Test(3))
Dim query = From X In list Select New With {.Points = 0, X.ID}
For Each o In query
    o.Points = 1
Next
因为您的query变量实际上代表一个查询,而不是一组实际的数据.每次枚举query它都会再次执行操作; 您的声明(分配query变量)定义查询.枚举它执行它.您想要做的是以列表的形式创建查询的内存中表示.你可以这样做:
Dim list = (From X In list Select New With {.Points = 0, X.ID}).ToList()
For Each o In list
    o.Points = 1
Next
这应该会给你你期望的行为.