XDocument / Linq将属性值连接为逗号分隔列表

时间:2009-09-02 16:08:29

标签: c# linq concatenation linq-to-xml

如果我有以下xml:

        XDocument xDocument = new XDocument(
            new XElement("RootElement",
                new XElement("ChildElement",
                    new XAttribute("Attribute1", "Hello"),
                    new XAttribute("Attribute2", "World")
                ),
                new XElement("ChildElement",
                    new XAttribute("Attribute1", "Foo"),
                    new XAttribute("Attribute2", "Bar")
                )
            )
        );

我在输出“Hello,Foo”之后使用LINQ“。”符号

我可以使用

获得“Hello”
xDocument.Element("RootElement").Element("ChildElement").Attribute("Attribute1").Value;

我可以使用

获取所有属性
xDocument.Element("RootElement").Elements("ChildElement").Attributes("Attribute1");

如何获取属性的字符串值列表,以便我可以以逗号分隔列表的形式加入?

2 个答案:

答案 0 :(得分:2)

var strings = from attribute in 
                       xDocument.Descendants("ChildElement").Attributes()
              select attribute.Value;

答案 1 :(得分:2)

好的,感谢womp我意识到我需要的Select方法才能获得属性Value,所以我可以得到一个字符串数组。因此,以下工作。

String.Join(",", (string[]) xDocument.Element("RootElement").Elements("ChildElement").Attributes("Attribute1").Select(attribute => attribute.Value).ToArray());