2010-03-08 91 views
0

鉴于以下XML,我想返回所有eventtitles,其中eventtype id = 23。我当前的查询只查看第一个eventtype,因此返回错误的结果。基于节点值的LINQ-to-XML选择,新手问题

<event> 
     <eventtitle>Garrison Keillor</eventtitle> 
     <eventtypes> 
     <eventtype id="24"/> 
     <eventtype id="23"/> 
     </eventtypes> 
    </event> 
    <event> 
     <eventtitle>Joe Krown Trio featuring Walter Wolfman Washington</eventtitle> 
     <eventtypes> 
     <eventtype id="23"/> 
     </eventtypes> 
    </event> 

LINQ查询:

Dim query = _ 
From c In calXML...<event> _ 
Where c...<eventtypes>.<eventtype>[email protected] = "23" _ 
Select c.<eventtitle>.Value, c.<eventlocation>.Value 


For Each item In query 
    Response.Write("<h3>" & item.eventtitle & "</h3>") 
    Response.Write(item.eventlocation & "<br />") 
Next 

回答

1

你需要调用Any,像这样:

Dim query = _ 
From c In calXML...<event> _ 
Where c.<eventtypes>.<eventtype>.Any(Function(t) [email protected] = "23") _ 
Select c.<eventtitle>.Value, c.<eventlocation>.Value 
+0

的功能是什么意义? – mmcglynn 2010-03-08 20:38:36

+0

这是一个Lambda表达式。 http://msdn.microsoft.com/en-us/library/bb531253.aspx – SLaks 2010-03-08 20:39:45