2009-09-10 227 views
1

是否可以在对象初始化表达式中使用lambda表达式?请看下面的代码:c#,使用带集合初始化的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") 

...我想用一个LAMDA表达式返回的XElement []

感谢您的帮助!

回答

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

非常感谢。你的回答正是我的问题的正确答案。不过,我想要稍微有点不同,你的回答引导我走向正确的方向。见下面的解决方案 非常感谢你。 – 2009-09-11 21:35:24

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

     ) 
    ) 
);