我有一个IEnumerables的集合,每个都有一个不同的属性值,对应于我的业务对象上的不同属性.以下是我要查询的XML示例:
<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>
Run Code Online (Sandbox Code Playgroud)
我认为我的linq2xml lambda很接近(在搜索MSDN和SO之后),但我似乎无法正确调整它:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
Run Code Online (Sandbox Code Playgroud)
cityName的值被分配给"System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement,System.String]"而不是ARLINGTON HEIGHTS
有什么建议?谢谢
小智 16
string cityName = (simpleData.Where(a => a.Attribute("name").Value == "name")
.Select(a => a.Value)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
要么
(from x in simpleData
where x.Attribute("name").Value == "name"
select x.Value).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
返回一个IEnumerable<string>(Linq扩展方法几乎总是返回集合而不是单个实例),其中包含name属性等于的所有元素值name.然后我们拿第一个,或者null如果它是空的.
此外,XML是可怕的,应该被拍摄.
| 归档时间: |
|
| 查看次数: |
17917 次 |
| 最近记录: |