XElement и список <T>

Можно использовать некоторые различные схемы этого. Я всегда тестировал на arguments.length:

function myFunc(requiredArg, optionalArg){
  optionalArg = myFunc.arguments.length<2 ? 'defaultValue' : optionalArg;

  ...

- выполнение так, это не может возможно перестать работать, но я не знаю, имеет ли Ваш путь шанс сбоя, сейчас я не могу продумать сценарий, где это на самом деле перестало бы работать...

И затем Paul предоставил один провальный сценарий!-)

8
задан casperOne 5 March 2013 в 15:11
поделиться

2 ответа

You need to pass the IEnumerable query as the second parameter, not the "Author" string, like so:

// Note the new way to initialize collections in C# 3.0.
List<Author> authors = new List<Author> ()
{
  new Author { FirstName = "Steven", LastName = "King" }),
  new Author { FirstName = "Homer", LastName = "" })
};

// The XML
XElement xml = new XElement("Authors",
    from na in this.Authors
    select new XElement("Author",
        new XElement("First", na.FirstName),
        new XElement("Last", na.LastName)));

That will give you the result you need.

11
ответ дан 5 December 2019 в 13:00
поделиться

Я знаю, что вы используете C #, но это тот случай, когда вам следует серьезно подумать о добавлении проекта VB.NET в свое решение. XML-литералы идеально подходят для этого и делают его намного проще.

Чтобы получить XML из вашего списка авторов, вы должны сделать следующее:

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
2
ответ дан 5 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: