c #, usando lambdas con l'inizializzazione della raccolta
Domanda
È possibile usare un'espressione lambda all'interno di un'espressione di inizializzazione oggetto? Si prega di guardare il codice qui sotto:
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")
)
)
);
invece di ...
new XElement("slide1"),
new XElement("slide2"),
new XElement("slide3")
... Voglio usare un'espressione lamda che restituisce XElement []
Soluzione
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()
)
)
);
Altri suggerimenti
La seguente è la soluzione finale. Quindi, invece di una funzione esterna, lo sto facendo in linea:
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)))
)
)
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow