Запрос LinqToObject Невозможно привести объект типа - PullRequest
0 голосов
/ 30 июля 2011

Почему этот запрос не работает

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 '.

1 Ответ

2 голосов
/ 30 июля 2011

Поскольку mapOverlay - это перечисляемый элемент mapOverlay, а не только один mapOverlay.

Я думаю, что вы пытаетесь сделать:

Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Single()
mapOverlay.IsVisibile = False

Если вы наведете указатель мыши на mapOverlay, вы увидите, что возвращаемый тип по сути является GMapOverlay, а не IEnumerable (из GMapOverlay), поскольку Single возвращает только один элемент. С другой стороны, Distinct может возвращать более одного элемента, он просто отфильтровывает повторяющиеся значения.

...