c #, usando lambdas com inicialização coleção
Pergunta
É possível usar uma expressão lambda dentro de uma expressão de inicialização objeto? Por favor, olhe o código abaixo:
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")
)
)
);
em vez de ...
new XElement("slide1"),
new XElement("slide2"),
new XElement("slide3")
... Eu quero usar uma expressão lambda que retorna XElement []
Solução
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()
)
)
);
Outras dicas
A seguir é a solução final. Então, ao invés de uma função externa que estou fazendo-lo em linha:
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)))
)
)
);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow