Vb.net LinqToObject查询无法强制转换类型为的对象
为什么这个查询不起作用Vb.net LinqToObject查询无法强制转换类型为的对象,vb.net,linq-to-objects,Vb.net,Linq To Objects,为什么这个查询不起作用 Private mapOverlays As New List(Of GMapOverlay) Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Distinct() DirectCast(mapOverlay,GMapOverlay).IsVisibile = False 我发现了错误 无法强制转换类型为的对象 “d_u7a`1[GMap.NET.WindowsForms.GMap
Private mapOverlays As New List(Of GMapOverlay)
Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Distinct()
DirectCast(mapOverlay,GMapOverlay).IsVisibile = False
我发现了错误
无法强制转换类型为的对象
“d_u7a`1[GMap.NET.WindowsForms.GMapOverlay]”以键入
“GMap.NET.WindowsForms.GMapOverlay”
因为mapOverlay是mapOverlays的可枚举项,而不仅仅是一个mapOverlay 我想你想做的是:
Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Single()
mapOverlay.IsVisibile = False
如果将鼠标移到mapOverlay上,您将看到返回的类型实际上是GMapOverlay而不是(GMapOverlay的)IEnumerable,因为Single只返回一个元素。另一方面,Distinct可以返回多个元素,它只是过滤掉重复的值