Linq to XML使用后代和Where子句

时间:2014-12-08 20:18:26

标签: linq-to-xml

我有以下XML:

<root>
    <property>
         <propertydetails>
             <siteid>4</siteid>
         </propertydetails>
         <gallery>
              <image>
                  <imagesrc></imagesrc>
              </image>
          </gallery>
      </property>
 </root>

使用LINQ to XML(C#)我想做的最终是获取特定siteid的所有图库图像。所以,我猜测最好返回propertydetails / siteid等于某个值的整个property元素。

我认为以下方法不起作用,因为我试图在后代中搜索元素并且它不是直接元素。 siteid位于propertydetails下方,但我想访问整个属性标记以获取图库图像。

     var properties = from property in root.Descendants("property")
             where (int)property.Element("siteid") == id
             select new PropertyModel
             {
                  SiteId = Convert.ToInt32(property.Element("siteid").Value),
                   Images = new List<string>(from gallery in property.Descendants("gallery")
                                              select gallery.Element("imagesrc").Value)
                             };
        }

1 个答案:

答案 0 :(得分:0)

我不确定它是否能解决上述问题,但它确实是一种解决方案。我使用xsd转换器将xml转换为xsd文件,然后将xsd文件转换为c#sharp类,可用于加载xml并执行后续处理。