我需要能够从具有特定本地名称但任何名称空间的元素中获取单个特定属性(如果您熟悉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");
有帮助吗?

解决方案

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

elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top