vb.net создает объекты для каждого цикла из частичной информации в Ienumerable

Резюме: я хочу создать объекты для каждого цикла.

У меня есть класс - Dashboard, у которого есть некоторые свойства - длина, высота и т. Д.

Эта информация содержится в документе XML, но свойства моего класса - это лишь небольшое подмножество информации в XML.

Я создал коллекцию XElement, и я могу перебирать их, но как мне создать свой объект на каждой итерации цикла?

Dim Col_DashBoards As IEnumerable(Of XElement) = From XDashboard In XDocument.Load(filename).Descendants("dashboard")
        For Each XDashboard In Col_DashBoards
            'PseudoCode
        Dim Xdashboard.Name as New DashboardClassObject
            Xdashboard.Name.Height = XDashboard.Element("Height").value 
            ...
        Next

1 ответ

Если я правильно понял ваш вопрос, вы хотите создать новый объект на основе подмножества данных из документа XML?

Ниже приведена функция, которая будет генерировать новый DashboardClassObject для каждого соответствующего узла и заполнить этот объект. Список типов DashboardclassObject возвращается

Public Function GenerateDashBoardFromXML(filename as string) As List(Of DashboardClassObject)
   Dim dashboardList As List(Of DashboardClassObject) = New List(Of DashboardClassObject)()
   Dim Col_DashBoards As IEnumerable(Of XElement) = From XDashboard In XDocument.Load(filename)?.Descendants("dashboard")

   For Each XDashboard In Col_DashBoards
       Dim dashboard As DashboardClassObject = New DashboardClassObject () With {
           .Name = XDashboard.Element("Height")?.value 
       }
       dashboardList.Add(dashboard)
   Next

   return dashboardList
End Function

Следует отметить, что здесь используется проверка Null. Ниже заполняется только если найден соответствующий элемент. Нулевой оператор объединения также является опцией здесь.

.Name = XDashboard.Element("Height")?.value 
Другие вопросы по тегам