LINQ:获取具有任何命名空间但具体名称的属性

时间:2008-11-17 08:54:30

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

我需要能够从具有特定本地名称但任何名称空间的元素中获取单个特定属性(如果您熟悉XMPP,您将理解为什么)。除了编写我自己的(枚举器或单选)扩展方法,还有什么想法吗?

我有以下内容,但我根本不喜欢它:

        XAttribute from = (from c in elem.Attributes()
                           where c.Name.LocalName == "from"
                           select c).FirstOrDefault<XAttribute>();

        XAttribute to = (from c in elem.Attributes()
                         where c.Name.LocalName == "to"
                         select c).FirstOrDefault<XAttribute>();

编辑:想要像:

        string val = (string)elem.Attribute("{*}to");

溶液:

        XAttribute from = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "from");

        XAttribute to = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "to");

1 个答案:

答案 0 :(得分:4)

如果你不喜欢这种语法,你可以使用这个;

elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");