linq в xml (преобразование c # в vb.net)

2

Что такое синтаксис VB.net ниже?

   var list = xd.Descendants("product")
   .Select(element =>new 
   { 
      Title = element.Attribute("title").Value,                   
      Duration = element.Element("duration").Value 
   }).ToList(); 
  • 0
    Есть кое-что: Dim list1 = (Из x In xd.Descendants ("product") _ .Select (Function (element) _ New With {.Title = element.Attribute ("title"). Value})). ToList ( ) нужно включить «продолжительность» .. как?
Теги:
lambda
linq-to-xml
.net-3.5

2 ответа

1
Лучший ответ

Попробуйте следующее:

Dim list = 
   From element In xd.Descendants("product")
   Select New With { _ 
       .Title = element.Attribute("title").Value, _
       .Duration = element.Element("duration").Value }

Вам не нужно использовать синтаксис Linq, вы можете просто использовать базовые расширения:

Dim list = xd.Descendants("product"). _
    Select(Function(element) _ 
        New With { _ 
           .Title = element.Attribute("title").Value, _
           .Duration = element.Element("duration").Value _
        }). _
    ToList()
  • 0
    Спасибо Китс - это разобрало меня
2

Если вы используете VB, для этого есть синтаксический сахар:

Dim list = 
   From element In xd...<product>
   Select New With { _ 
       .Title = element.@title, _
       .Duration = element.<duration>.Value }

Хорошей частью является то, что если у вас есть xsd для вашего документа (и вы можете создать его через визуальную студию, выведя его из одного или нескольких XML-документов), вы можете импортировать его почти так же, как и пространство имен и Visual Studio предоставит вам завершение intellisense при написании вашего запроса.

Некоторые ссылки:

  • 0
    Для чего нужна функция CStr? Элемент. @ Title не возвращает строку?
  • 0
    Это абсолютно верно, я не знаю, почему я положил это туда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню