2012-04-28 67 views
0

访问数据我有一个包含像Linq查询从XML

<root> 
    <gp> 
     <i>1</i> 
     <i>3</i> 
     <i>5</i> 
    </gp> 
    <gp> 
     <i>5</i> 
     <i>6</i> 
    </gp> 
    . 
    . 
</root> 

现在我想编写一个查询由我会得到其中包含价值5 <i>元素中的所有gp元素的一些元素一个XML文件? `

+0

IEnumerable的 variable = document.Elements(“gp”)。其中(p => p。现在我在这里被卡住了,因为这里我们必须迭代元素也 – gaurav 2012-04-28 18:56:54

回答

2
var results = from gp in doc.Descendants("gp") 
       where gp.Elements("i").Any(i => (int)i == 5) 
       select gp 

而在基于方法的语法:

var results = doc.Descendants("gp").Where(gp => gp.Elements("i").Any(i => (int)i == 5)); 
+0

我认为使用'i.value ==“5”'会更好,我不认为你可以将XElement转换为int。 – 2012-04-28 19:00:24

+1

@ErikPhilips:是的,你可以尝试一下 – BrokenGlass 2012-04-28 19:02:32

+0

@ErikPhilips:是的,你可以。而不仅仅是int:http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.aspx – MarcinJuraszek 2012-04-28 19:03:24