2015-10-29 2 views
0

Я следующий код vb.net:с помощью LINQ

Dim carsDoc As XDocument = XDocument.Parse(sCarsXML) 
Dim query = From ex In carsDoc.Descendants("car") 
Select New With { 
    .id = ex.Element("id").Value, 
    .code = ex.Element("code").Value 
} 

For Each ex In query 
    MsgBox("ID: " & ex.id.ToString & vbCrLf & "CODE: " & ex.code.ToString) 
Next 

Я получаю следующее сообщение об ошибке в строке 9 (код MsgBox):

BC30451 'бывший' не объявлен. Он может быть недоступен из-за его уровня защиты .

Я добавил необходимые ссылки:

Imports System.Xml.Linq 
Imports System.Linq 

Я не могу понять эту проблему?

ответ

0

После нескольких часов поиска в Интернете, я нашел проблему/решение:

"Option Infer «в разделе« «Компиляция» раздел настроек проекта был отключен. Это связано с тем, что я преобразовал проект из .NET Framework 2.0 в 3.5.

0

Тип элементов в query не является XElement, это анонимный тип, созданный оператором New With.

Не следует указывать тип переменной в цикле:

For Each ex In query 
+0

Я изменил код, но получаю ту же ошибку – milo2011

+0

@ milo2011: Это странно. С этим изменением я не получаю никаких ошибок в коде. – Guffa

+0

Да, я знаю, это очень странно. Когда я создаю новый проект и добавляю код, он работает без каких-либо ошибок, но когда я добавляю код в качестве части моего рабочего проекта, он больше не работает. – milo2011

Смежные вопросы