查找的XElement根据属性值 [英] Find XElement by Attribute value
问题描述
我有IEnumerables的集合,每个人都有对应于我的业务对象的不同属性不同的属性值。下面是我查询对XML的示例:
< SimpleData NAME =拉链> 60004< / SimpleData>
< SimpleData名=名与GT;阿灵顿高地< / SimpleData>
< SimpleData NAME =状态> IL< / SimpleData>
< SimpleData NAME =countyname>&COOK LT; / SimpleData>
< SimpleData NAME =纬度> 42.1121336684356< / SimpleData>
< SimpleData NAME =经度> -87.9736682731814< / SimpleData>
我觉得我linq2xml拉姆达接近(搜索MSDN和SO后),但我似乎无法调整它恰到好处:
字符串的cityName = simpleData.Where(A =方式> a.Attribute(name)的值==名)选择(A => a.value中)。的ToString();
的cityName获得的分配给System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement,System.String],而不是阿灵顿高地的价值
有什么建议?谢谢
字符串的cityName =(simpleData.Where(A =方式> a.Attribute(name)的值== 名称)
。选择(A => a.value中)。)FirstOrDefault();
或
(从simpleData点¯x
其中,x.Attribute(名称)。价值==名
选择x.Value).FirstOrDefault()
返回一个的IEnumerable<串>
(LINQ扩展方法几乎总是返回集合,而不是单一实例)包含其所有的元素值名称
属性等于名称
。然后,我们占据第一位,或空
如果是空的。
另外,XML是可怕的,应该被枪毙。
I have a collection of IEnumerables and each one has a different attribute values that corresponds to a different property on my business object. Here is a sample of the XML that I am querying against:
<SimpleData name="zip">60004</SimpleData>
<SimpleData name="name">ARLINGTON HEIGHTS</SimpleData>
<SimpleData name="state">IL</SimpleData>
<SimpleData name="countyname">COOK</SimpleData>
<SimpleData name="lat">42.1121336684356</SimpleData>
<SimpleData name="lon">-87.9736682731814</SimpleData>
I think my linq2xml lambda is close (after searching MSDN and SO) but I can't seem to tweak it just right:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
The value of cityName get's assigned to "System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String]" instead of ARLINGTON HEIGHTS
Any suggestions? Thanks
string cityName = (simpleData.Where(a => a.Attribute("name").Value == "name")
.Select(a => a.Value)).FirstOrDefault();
or
(from x in simpleData
where x.Attribute("name").Value == "name"
select x.Value).FirstOrDefault()
which returns an IEnumerable<string>
(Linq extension methods almost always return collections and not single instances) containing all element values whose name
attribute equals name
. Then we take the first one, or null
if its empty.
Also, that XML is horrendous and should be shot.
这篇关于查找的XElement根据属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!