首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq-to-XML:查询清理

Linq-to-XML:查询清理
EN

Stack Overflow用户
提问于 2009-05-19 21:11:20
回答 1查看 240关注 0票数 0

Linq新手,尝试查询XDocument。我想要某个属性等于两个值中的一个的元素。

正在寻找有关如何简化此查询的建议:

query = from xElem in doc.Descendants(StringLiterals._streamNodeName)

代码语言:javascript
复制
                     `where ((0 == xElem.Attribute(StringLiterals._typeAttributeName).Value.CompareTo(StringLiterals._sWorkspace)) ||`
代码语言:javascript
复制
                            `(0 == xElem.Attribute(StringLiterals._typeAttributeName).Value.CompareTo(StringLiterals._sNormal)))`

select new AccuRevXmlElement

代码语言:javascript
复制
 `{`
代码语言:javascript
复制
 `_location = xElem.Attribute(StringLiterals._nameAttributeName).Value,`

_streamNumber = xElem.Attribute(StringLiterals._streamNumberAttributeName).Value

};

谢谢你的点子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-19 21:22:06

实际上你已经做得很好了,但是你可以稍微简化一下(未经测试):

代码语言:javascript
复制
from xElem in doc.Descendants(StringLiterals._streamNodeName)
let typeAttributeValue = xElem.Attribute(StringLiterals._typeAttributeName).Value
where typeAttributeValue == StringLiterals._sW... ||
      typeAttributeValue == StringLiterals._sNormal
select new AccuRevXmlElement
{
    _location = xElem.Attribute(StringLiterals._nameAttributeName).Value,
    _streamNumber =
        xElem.Attribute(StringLiterals._streamNumberAttributeName).Value
};

主要区别在于在查询中引入新变量的let关键字,以及可以使用==运算符比较字符串的事实,因为System.String实现了这个运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/885051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档