#linq-to-xml
#linq-to-xml
Вопрос:
У меня есть этот код.
Dim contact1 As XElement = _
<contacts>
<contact>
<%= From contact In contacts _
Select <name><%= contact.Nom %></name> %>
</contact>
</contacts>
Этот код фактически выбирает контакт
Есть 2 объекта, контакт и телефон. Контакт может содержать список телефонных номеров. Здесь приведены сведения о классе…
Public Class Contact
Private m_Name As String
Public Property Name() As String
Get
Return m_Name
End Get
Set(ByVal value As String)
m_Name = value
End Set
End Property
Private m_Phones As List(Of Phone)
Public Property Phones() As List(Of Phone)
Get
Return m_Phones
End Get
Set(ByVal value As List(Of Phone))
m_Phones = value
End Set
End Property
End Class
Public Class Phone
Private m_Contact As Contact
Public Property Contact() As Contact
Get
Return m_Contact
End Get
Set(ByVal value As Contact)
m_Contact = value
End Set
End Property
Private m_Number As String
Public Property Number() As String
Get
Return m_Number
End Get
Set(ByVal value As String)
m_Number = value
End Set
End Property
End Class
Как мне включить телефоны в этот запрос между <phone type="...">...</phone>
для каждого из них?
Бонус ( 1): как также включить тип?
Спасибо.
Комментарии:
1. Возможно, вы захотите опубликовать определения классов имеющихся у вас объектов и некоторые примеры данных. В настоящее время неясно, какие данные у вас есть и какой результат вы хотите.
2. Я добавил определение класса.. однако о данных .. это могут быть любые данные, основанные на этих определениях.
Ответ №1:
Вы четко не описали, какой результат вы хотите или в чем проблема, возможно, следующий пример кода поможет:
Dim contact1 As New Contact() With {
.Name = "John Doe",
.Phones = New List(Of Phone) From {New Phone() With {.Number = "555 12345"}, New Phone() With {.Number = "123 54321"}}
}
Dim contacts As New List(Of Contact)() From {contact1}
Dim contactElements As XElement = _
<contacts>
<%= From contact In contacts
Select <contact>
<name><%= contact.Name %></name>
<phones>
<%= From phone In contact.Phones
Select <phone><%= phone.Number %></phone>
%>
</phones>
</contact>
%>
</contacts>
Результат таков
<contacts>
<contact>
<name>John Doe</name>
<phones>
<phone>555 12345</phone>
<phone>123 54321</phone>
</phones>
</contact>
</contacts>
Комментарии:
1. Я, хотя и выразился довольно ясно, извиняюсь за путаницу. Результат — это именно то, что вы написали, мне не нужны были какие-то особые результаты, иначе я бы сказал это, хе-хе. Ваш код — это именно то, что мне было нужно. Спасибо.