Pergunta

Eu tenho uma classe que tem as seguintes propriedades:

public class Author {
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

Em seguida, eu tenho uma lista de autores como assim:

List<Author> authors = new List<Author> ();

authors.add(
  new Author { 
    FirstName = "Steven",
    LastName = "King"
  });

authors.add(
  new Author { 
    FirstName = "Homer",
    LastName = ""
  });

Agora, eu estou tentando usar Linq para XML, a fim de gerar o XML representando meus autores de lista.

new XElement("Authors",
  new XElement("Author", 
    from na in this.Authors
    select new XElement("First", na.First)))

O bloco acima não gera o XML como eu esperava que. O que eu recebo é:

<Authors>
  <Author>
    <First>Steven</First>
    <First>Homer</First>
  </Author>
<Authors>

O que eu quero a saída XML para olhar como é:

<Authors>
  <Author>
    <First>Steven</First>
    <Last>King</Last>
  </Author>
  <Author>
    <First>Homer</First>
    <Last></Last>
  </Author>
</Authors>

Qualquer ajuda sobre como obter o XML para olhar como eu preciso que ele seria imensamente apreciada!

Outras dicas

Eu sei que você está usando C #, mas este é um momento em que você deve considerar seriamente a adição de um projeto VB.NET para a sua solução. Literais XML são perfeitos para isso e torná-lo muito mais fácil.

Para obter o XML da sua lista de Autor, você faria isso:

Function GetAuthorsXML(authors As List(Of Author)) As XElement
    Return <Authors>
               <%= from a in authors _
                   select <Author>
                              <First><%= a.FirstName %></First>
                              <Last><%= a.LastName %></Last>
                          </Author> %>
           </Authors>
End Function
scroll top