我想弄清楚如何获得匿名类型的对象的属性,当时没有在当前函数中创建匿名类型。如何从VB.NET中的匿名类型获取属性
具体来说,我将ASP.NET ListView绑定到LINQ结果集,然后尝试处理ItemDataBound事件中的每个项目。
Option Explicit On
Option Strict On
Class MyPageClass
Private Sub Bind()
Dim items As ItemData = FetchItemData()
Dim groups = From s In items Group s By Key = s.GroupId Into Group _
Select GroupID = Key, GroupData = Group
' This works fine:
Dim groupId As Integer = groups(0).GroupID
lvGroups.DataSource = groups
lvGroups.DataBind()
End Sub
Private Sub lvGroups_ItemDataBound(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles lvGroups.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
Dim item As ListViewDataItem = DirectCast(e.Item, ListViewDataItem)
Dim groupData = item.DataItem ' This is the anonymous type {GroupId, GroupData}
' Next Line Doesn't Work
' Error: Option Strict disallows late binding
Dim groupId As Integer = groupData.GroupId
End If
End Sub
End Class
我需要什么,在lvGroups_ItemDataBound做()来获得在item.DataItem.GroupId?
工作正常。你GetPropertyValue返回一个字符串,我知道我把一个整数在那里,所以这里是我的新代码: – slolife 2010-02-12 19:27:19
Dim currentGroupId As Integer = Integer.Parse(DataBinder.GetPropertyValue(item.DataItem,“GroupId”,Nothing)) – slolife 2010-02-12 19:29:17