C#, 수집 초기화와 함께 Lambdas를 사용합니다
문제
객체 초기화 표현식 내에서 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)))
)
)
);
제휴하지 않습니다 StackOverflow