Использование цикла For Each с предложением Where для XElement - PullRequest
1 голос
/ 06 октября 2010

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

Я думал, что смогу сделать это с помощью предложения 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>

Спасибо

1 Ответ

0 голосов
/ 06 октября 2010

Похоже, вы пытаетесь использовать C # лямбда => вместо синтаксиса VB.NET Function.Подробнее о синтаксисе см. В лямбда-выражениях (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
...