我需要一些關於LINQ和XML的幫助。我讀過很多文章,但似乎無法找到我正在尋找的內容,因爲大多數人都在循環查看結果以獲取值。我有以下XML,我需要首先訪問基於節名稱,然後在控制ID上的特定元素。linq query to element w/o foreach
<formData>
<section name="SectionA">
<control id="Textbox1" type="TextBox">
<value>Value1</value>
</control>
<control id="Textbox2" type="TextBox">
<value>Value2</value>
</control>
<control id="Textbox3" type="TextBox">
<value>Value2</value>
</control>
</section>
<section name="SectionB" />
<section name="SectionC" />
<section name="SectionD" />
<section name="SectionE" />
</formData>
我正在使用下面的代碼來獲取我需要的元素。
IEnumerable<XElement> fields = xDocument.Element("formData").Elements("section")
.Where(m => m.Attribute("name").Value == "SectionA")
.Single()
.Elements("control")
.Where(f => f.Attribute("id").Value == "Control1");
導致以下元素:
<control id="Textbox1" type="TextBox">
<value>Value1</value>
</control>
然而,這隻要我能...我需要三個獨立的值,編號,類型和價值。如何在不使用foreach或嵌套的foreach循環的情況下解決此問題?
謝謝
因此,您唱匿名類型,我可以訪問這些字段: * fields.ElementAt(0)* OR * fields.FirstOrDefault()*還是有更好的方法嗎?謝謝Mike – Mike 2012-04-27 04:31:51
對於匿名類型,字段類型爲IEnumerable。要訪問每個字段,可以遍歷每個控件並訪問Id,Type和Value屬性。如果您只想要第一個元素,請調用fields.FirstOrDefault()以獲取第一個元素。 –
JKor
2012-04-27 15:56:02