代码之家  ›  专栏  ›  技术社区  ›  Net User HH

C,使用lambda进行集合初始化

  •  1
  • Net User HH  · 技术社区  · 15 年前

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

    2 回复  |  直到 5 年前
        1
  •  1
  •   Ben M    15 年前
    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()
                    )
                )
            );
    
        2
  •  0
  •   Net User HH    15 年前

    以下是最终解决方案。因此,我不是在内联执行外部函数:

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