1
我想基于复选框的选择来构建一个XDocument查询。使用变量修改XDocument查询
我有下面的代码,这是行不通的,因为我不确定所需的语法。我认为这很明显是它试图达到的目标;这几乎是我在SQL中构建Where语句的方式。最终代码中将有大约16个复选框,这就是使用多个If语句的原因。
Private Sub NextWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NextWord.Click
Dim WordDictionary As XDocument = XDocument.Load("Dictionary Resources\Dictionary.xml")
Dim CheckSelection As String
If NounCheckbox.Checked = True Then
CheckSelection = CheckSelection & "noun"
End If
If AdjectiveCheckbox.Checked = True Then
CheckSelection = CheckSelection & "adjective"
End If
Dim ToList = From x In WordDictionary.Root.Elements("Word") Where x.Elements("Type").Value = CheckSelection
For Each result In ToList
Console.WriteLine(result)
Next
End Sub
为了完整起见,XML文件中有这样的结构:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Word ID="1">
<Type>adjective</Type>
<English></English>
<Thai></Thai>
<Meaning></Meaning>
<Audio>Dictionary Resources\Sound Files\1.wav</Audio>
<Picture></Picture>
<Transliteration></Transliteration>
</Word>
...
...
</Root>
如果查询返回3个节点,并且我想引用第二个节点,那么请使用什么语法来执行此操作?显然,在我的语法中选择是错误的'Label1.Text = query.Select(2).Element(“English”)。Value' – Andy
@Andy我更新了我的回复以解决您的问题。 –
谢谢艾哈迈德,太好了。你可以告诉我,我对XML很陌生。检查selectedTypes后面的原因是什么?包含x.Element(“Type”)。Value而不是检查x.Element(“Type”)。Value是否包含selectedTypes?把它写成后者似乎对我更有意义; Contains参数将接受哪些数据类型? – Andy