문제

객체 초기화 표현식 내에서 Lambda 표현식을 사용할 수 있습니까? 아래 코드를 참조하십시오.

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 []를 반환하는 Lamda 표현식을 사용하고 싶습니다.

도움이 되었습니까?

해결책

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