Выражение типа «System.Collections.Generic.IEnumerable (Of System.Xml.Linq.XElement)» не подлежит запросу - PullRequest
0 голосов
/ 15 октября 2018

Мой класс выдает мне ошибку:

Error 4 Expression of type 'System.Collections.Generic.IEnumerable(Of System.Xml.Linq.XElement)' is not queryable. Make sure you are not missing an assembly reference and/or namespace import for the LINQ provider.

Я искал похожие вопросы и обнаружил, что это может быть проблема с импортом / ссылками.Тем не менее, я думаю, что импортировал все, что мне нужно, и все равно выдает ошибку.

Ниже приведены ссылки на классы и проекты:

references

Imports System.Data.SqlClient
Imports System.Collections
Imports System.Data
Imports System
Imports System.Xml
Imports System.Xml.Linq


Public Class Form1

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub

    Dim Result As Integer
    Dim mxldDataParams As System.Xml.Linq.XDocument = XDocument.Load("mypath\myxml.xml")


    Private Function GetProcedureName(ByVal Name As String) As String
        Dim Result As String = String.Empty
        'this line gives the error
        Dim Elems As System.Collections.Generic.IEnumerable(Of XElement) = From Elem As XElement In mxldDataParams.Root.Elements Where Elem.Name.LocalName = "data" And Elem.@name = Name
        For Each Elem As XElement In Elems
            Result = Elem...<target>...<remote>...<source>.@name
            Exit For
        Next
        Return Result
    End Function


End Class

1 Ответ

0 голосов
/ 15 октября 2018

У вас нет импорта для System.Linq, что означает, что компилятор не может найти LINQ to Objects, то есть реализацию LINQ, которую вы пытаетесь использовать.

Просто добавьте это в свойimport:

Imports System.Linq

LINQ to XML на самом деле не является поставщиком LINQ - это просто XML API, который также хорошо работает с LINQ to Objects.

...