c #, используя лямбды с инициализацией коллекции

StackOverflow https://stackoverflow.com/questions/1402860

  •  05-07-2019
  •  | 
  •  

Вопрос

Можно ли использовать лямбда-выражение внутри выражения инициализации объекта? Пожалуйста, посмотрите на код ниже:

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
        new XElement("data",
            new XElement("album",
                new XElement("slide1"),
                new XElement("slide2"),
                new XElement("slide3")
                )
            )
        );

вместо ...

new XElement("slide1"),
new XElement("slide2"),
new XElement("slide3")

... я хочу использовать лямда-выражение, которое возвращает XElement []

Это было полезно?

Решение

Func<XElement[]> elementCreatorFunc = 
    () => new[] { new XElement(...), new XElement(...) };

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
        new XElement("data",
            new XElement("album",
                elementCreatorFunc()
                )
            )
        );

Другие советы

Ниже приводится окончательное решение. Поэтому вместо внешней функции я делаю это встроенным:

XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), 
    new XElement("data", 
        new XElement("album",
            (from item in Model.Items
             select new XElement("slide",
                         new XAttribute("title", item.title)))

        )
    )
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top