Pregunta

Tengo una clase que tiene las siguientes propiedades:

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

A continuación, tengo una lista de autores, así:

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

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

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

Ahora, estoy tratando de utilizar LINQ to XML con el fin de generar el XML que representa mi lista de autores.

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

El bloque anterior no genera el XML como espero que lo haga. Lo que consigo es:

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

Lo que quiero la salida XML para parecerse es:

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

Cualquier ayuda sobre cómo obtener el código XML se vea lo que necesito que se agradece muchísimo!

Otros consejos

Sé que estás usando C #, pero este es un momento en que usted debería considerar seriamente la adición de un proyecto VB.NET a su solución. Los literales XML son perfectos para esto y hacen que sea mucho más fácil.

Para obtener el código XML de la lista de Autor, que haría esto:

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