Frage

Ist es möglich, einen Lambda-Ausdruck innerhalb eines Objekts Initialisierungsausdruck zu benutzen? Bitte schauen Sie auf den folgenden Code:

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")
                )
            )
        );

statt ...

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

... Ich mag einen lamda Ausdruck verwenden, die XElement []

zurück
War es hilfreich?

Lösung

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()
                )
            )
        );

Andere Tipps

Im Folgenden ist die endgültige Lösung. Anstatt also eine externe Funktion es inline ich tue:

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)))

        )
    )
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top