c#,使用lambdas进行集合初始化

时间:2009-09-10 00:39:49

标签: c#-3.0 lambda

是否可以在对象初始化表达式中使用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表达式

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

以下是最终解决方案。因此,我没有使用外部函数进行内联:

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

        )
    )
);