为什么此查询不起作用
Private mapOverlays As New List(Of GMapOverlay)
Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Distinct()
DirectCast(mapOverlay,GMapOverlay).IsVisibile = False
我收到错误
无法投射类型的对象 'd__7a`1 [GMap.NET.WindowsForms.GMapOverlay]'来输入 'GMap.NET.WindowsForms.GMapOverlay'。
答案 0 :(得分:2)
因为mapOverlay是mapOverlays的可枚举,而不仅仅是一个mapOverlay。
我认为你要做的是:
Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Single()
mapOverlay.IsVisibile = False
如果将鼠标移到mapOverlay上,您将看到返回的类型实际上是GMapOverlay而不是IEnumerable(GMapOverlay),因为Single只返回一个元素。另一方面,区别可以返回多个元素,它只是过滤掉重复的值。