Vb.net 从元素中铸造(的?)

Vb.net 从元素中铸造(的?),vb.net,linq,silverlight,uielement,Vb.net,Linq,Silverlight,Uielement,在silverlight中,我的自定义控件位于我的StackPanel的UIElementCollection中。我想通过一个特定的值得到它们的列表。容器中只有DivElements。当我知道我有一个或多个时,它返回Nothing。我知道我可以做一个简单的循环并内联转换类型,但我想通过LINQ和cast(Of TResult)做得更好。我尝试铸造: Dim myList = TryCast(spDivs.Children.Where(Function(o) DirectCast(o, DivEl

在silverlight中,我的自定义控件位于我的
StackPanel
UIElementCollection
中。我想通过一个特定的值得到它们的列表。容器中只有
DivElements
。当我知道我有一个或多个时,它返回
Nothing
。我知道我可以做一个简单的循环并内联转换类型,但我想通过
LINQ
cast(Of TResult)
做得更好。我尝试铸造:

Dim myList = TryCast(spDivs.Children.Where(Function(o) DirectCast(o, DivElement).ElementParent Is bComm).Cast(Of DivElement)(), List(Of DivElement))
问题是您不能强制转换到
列表(DivElement)
。该集合是一个
UIElementCollection
,而不是一个
列表(共T个)

不过,你可以建立一个新的列表。这也可以通过使用类型的
而不是手动强制转换来简化:

Dim myList = spDivs.Children.OfType(Of DivElement)()
                            .Where(Function(o) o.ElementParent Is bComm)
                            .ToList()

我完全错过了类型