从另一个论坛得到了一个很好的答案,这里是最后一个:
Dim meals As XElement = <Meals>
<ketchup/>
<steak/>
<mustard/>
<thigh/>
<fillet/>
<macaroni/>
<drumstick/>
<thigh/>
<ketchup/>
<thigh/>
<fillet/>
</Meals>
Dim newMeals As XElement = <Meals/>
Dim meal As XElement = <Meal/>
Dim hasBeef As Boolean
Dim hasChicken As Boolean
For Each m In meals.Descendants()
Select Case m.Name
Case Is = "steak", "fillet"
If hasBeef Then
newMeals.Add(meal)
meal = <Meal/>
hasChicken = False
Else
hasBeef = True
End If
meal.Add(m)
Case Is = "drumstick", "thigh"
If hasChicken Then
newMeals.Add(meal)
meal = <Meal/>
hasBeef = False
Else
hasChicken = True
End If
meal.Add(m)
Case Else
meal.Add(m)
End Select
Next
newMeals.Add(meal)