簡體   English   中英

使用linq查詢XML並比較兩個變量

[英]Query XML using linq and comparing two variable

試圖寫一個選擇,讓我選擇一個特定的辦公室元素

這是我的XML

<?xml version="1.0"> 
<regions>
    <region>
        <office>
            <name>Office One</name>
        </office>

        <office>
            <name>Office Two</name>
        </office>
        <settings>
            <name>Main Regional Name</name>
        </settings>
    </region>
    <region>
        <office>
            <name>Office Three</name>
        </office>

        <office>
            <name>Office Four</name>
        </office>
        <settings>
            <name>Secondary Regional Name</name>
        </settings>
    </region>

這是我的代碼

    Dim clfWizardXml As XElement
    Dim selectRegion = lstRegions.SelectedItem
    Dim selectOffice = lstOffices.SelectedItem


    Console.WriteLine(selectRegion + " " + selectOffice)


    Dim officeList As IEnumerable(Of XElement) = _
        From region In clfWizardXml.Elements("region"), _
             office In clfWizardXml.Elements("region").Elements("office") _
        Where region.Element("settings").Element("name").Value = selectRegion _
        And office.Element("name").Value = selectOffice
        Select office

我認為我的問題就在這里:和office.Element(“ name”)。Value = selectOffice

謝謝大家的幫助,問題是我在第二個區域的辦公室級別錯誤。

看來您的問題是clfWizardXml.Elements("region")不返回任何內容,因為region不在文檔的正下方。 相反,您需要clfWizardXml.Root.Elements("region")clfWizardXml.Descendants("region")

Dim officeList As IEnumerable(Of XElement) = _
    From region In clfWizardXml.Root.Elements("region"), _
         office In clfWizardXml.Root.Elements("region").Elements("office") _
    Where region.Element("settings").Element("name").Value = selectRegion _
    And office.Element("name").Value = selectOffice
    Select office

另外,由於VB.NET支持XML文字,因此您可以使其看起來更好(無論如何對我來說,您可能會不同意):

Dim officeList As IEnumerable(Of XElement) =
    From region In clfWizardXml...<region>,
         office In region.<office>
    Where region.<settings>.<name>.Value = selectRegion _
        AndAlso office.<name>.Value = selectOffice
    Select office

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM