1
我一直在尝试以下,但它返回意外的结果:动态LINQ查询
Dim xd As XDocument = _
<?xml version="1.0" encoding="utf-8"?>
<root>
<element>
<subelement id="1">
<subsubelement id="1"/>
<subsubelement id="3"/>
<subsubelement id="1"/>
</subelement>
<subelement id="2"/>
<subelement id="3"/>
</element>
<element>
<subelement id="4"/>
<subelement id="3"/>
<subelement id="2">
<subsubelement id="1"/>
<subsubelement id="1"/>
<subsubelement id="3"/>
</subelement>
<subelement id="5"/>
</element>
</root>
Dim haveSubelementId As Boolean = True
Dim haveSubSubelementId As Boolean = True
Dim results = From q In xd...<element>
If haveSubelementId Then
results = From q In results.<subelement> Where [email protected] = 1
End If
If haveSubSubelementId Then
results = From q In results.<subsubelement> Where [email protected] = 3
End If
results = results.Ancestors.<element>
上述结果同时返回“元素”节点但是它应该只返回第一个where元素/子元素@ ID = 1/subsubelement @ id = 3
但是,如果results.Ancestors。被使用它返回正确的'子元素',如果该行不包含它返回一个'subsubelement'这也是正确的我不明白为什么当mvoing到'元素'它返回两个(我意识到两者都有一个子元素与id = 1,但我认为每个进一步的查询将过滤出以前的结果)任何人有任何建议?