2009-09-10 225 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))) 

     ) 
    ) 
);