2010-10-05 1 views
1

Я пытаюсь написать для каждого цикла, который проходит через потомки XML-документа, но только те, которые удовлетворяют критериям.Использование для каждого цикла с предложением Where для XElement

Я думал, что смогу сделать это с предложением where, но у меня возникают проблемы с этим. Было бы здорово, если бы кто-нибудь мог сообщить мне, действительно ли это возможно, или если есть другой способ, я могу это сделать.

Я кодирования в VB.Net Мой код до сих пор:

For Each Room In xmlDoc.Descendants("Rooms").Where((Room >= Room.Descendants ("ReservationID").Value = 80154)) 

Next 

XML-что я хотел бы цикл через это:

- <NewDataSet xmlns=""> 
- <Rooms diffgr:id="Rooms1" msdata:rowOrder="0" diffgr:hasChanges="inserted"> 
    <ReservationID>80154</ReservationID> 
    <Ref /> 
    <ReservationDateTime>5/10/2010 1:35:27 p.m.</ReservationDateTime> 
    <IsCommissionableBooking>False</IsCommissionableBooking> 
    <RoomID>800010</RoomID> 
    <RoomNumber>Double</RoomNumber> 
    </Rooms> 
- <Rooms diffgr:id="Rooms2" msdata:rowOrder="1" diffgr:hasChanges="inserted"> 
    <ReservationID>80154</ReservationID> 
    <Ref /> 
    <ReservationDateTime>5/10/2010 1:35:27 p.m.</ReservationDateTime> 
    <IsCommissionableBooking>False</IsCommissionableBooking> 
    <RoomID>800009</RoomID> 
    <RoomNumber>Motel</RoomNumber> 
    </Rooms> 
- <Rooms diffgr:id="Rooms3" msdata:rowOrder="2" diffgr:hasChanges="inserted"> 
    <ReservationID>80151</ReservationID> 
    <Ref /> 
    <ReservationDateTime>5/10/2010 12:22:16 p.m.</ReservationDateTime> 
    <IsCommissionableBooking>False</IsCommissionableBooking> 
    <RoomID>800009</RoomID> 
    <RoomNumber>Motel</RoomNumber> 
</Rooms> 

Благодаря

+0

У вас есть 'Rooms', если вы не укажете' Where' положение? –

ответ

0

Это выглядит как вы пытаетесь использовать C# lambda => вместо синтаксиса VB.NET Function. Обратитесь к Lambda Expressions (Visual Basic) за дополнительной информацией о синтаксисе.

Попробуйте этот код вместо:

Dim query = xml.Descendants("Rooms").Where(Function(r) r.Descendants("ReservationID").Value = 80154) 
For Each room In query 
    ' do something with room ' 
    Console.WriteLine("Room ID: " & room.Element("RoomID").Value) 
Next 
Смежные вопросы