Пишите телефоны из контакта в том же запросе LinqToXml? - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть этот код.

   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 Ответ

0 голосов
/ 11 ноября 2011

Вы не четко описали, какой результат вам нужен или в чем проблема, возможно, поможет следующий пример кода:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...