c #, usando lambdas con inicialización de colección
Pregunta
¿Es posible usar una expresión lambda dentro de una expresión de inicialización de objeto? Por favor mire el código de abajo:
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")
)
)
);
en lugar de ...
new XElement("slide1"),
new XElement("slide2"),
new XElement("slide3")
... Quiero usar una expresión lamda que devuelva XElement []
Solución
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()
)
)
);
Otros consejos
La siguiente es la solución final. Así que en lugar de una función externa lo estoy haciendo en línea:
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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow