Tôi có một bộ sưu tập các IEnumerables và mỗi bộ có một giá trị thuộc tính khác nhau tương ứng với một thuộc tính khác nhau trên đối tượng kinh doanh của tôi. Đây là một mẫu của XML mà tôi đang truy vấn chống lại:Tìm XElement theo giá trị thuộc tính
<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>
Tôi nghĩ lambda linq2xml tôi gần (sau khi tìm kiếm MSDN và SO) nhưng tôi dường như không thể tinh chỉnh nó vừa phải:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
giá trị có được của cityName giao cho "System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement, System.String]" thay vì Arlington Heights
Bất kỳ lời đề nghị? Cảm ơn
+1 cho XML đó nên được quay! – CoderDennis
Tôi sẽ đề nghị sử dụng thuộc tính '(string) (" name ")' over 'Attribute (" name "). Value' - nó giống nhau, ngoại trừ việc nó kiểm tra null trước. Vì 'Attribute()' trả về 'null' khi không có thuộc tính nào với các tên thoát như vậy trên một phần tử, phần tử đầu tiên như vậy sẽ kích hoạt một' NullReferenceException' trong truy vấn như hiện đang được viết. –
Chết tiệt, tôi biết đó chỉ là một điều nhỏ mà tôi đã bỏ lỡ, thêm FirstOrDefault đã làm điều đó. Cảm ơn. Tôi không thể làm gì nhiều về XML, đó là nguồn nhập dữ liệu của bên thứ ba. –