문제
나는 LINQ에서 무언가를 사로 잡는 데 어려움을 겪고 있습니다. 누군가가 나에게 몇 가지 팁을 줄 수 있습니다.
새로운 XML로 변환 해야하는 XML이 있습니다. 이것의 문제는 그것을 올바르게하기 위해 몇 가지 변환의 반복이 필요하다는 것입니다.
소스는 다음과 같이 보일 것입니다.
<Meals>
<ketchup/>
<steak/>
<mustard/>
<thigh/>
<fillet/>
<penne/>
<drumstick/>
<steak/>
<ketchup/>
<fillet/>
<fillet/>
<macaroni/>
<drumstick/>
<thigh/>
<ketchup/>
<thigh/>
<fillet/>
</Meals>
내가 이것을 끝내고 싶은 것은 다음과 같습니다.
<Meals>
<Meal>
<ketchup/>
<steak/>
<mustard/>
<thigh/>
</Meal>
<Meal>
<fillet/>
<penne/>
<drumstick/>
</Meal >
<Meal>
<steak/>
<ketchup/>
</Meal>
<Meal>
<fillet/>
</Meal>
<Meal>
<fillet/>
<macaroni/>
<drumstick/>
</Meal>
<Meal>
<thigh/>
<ketchup/>
</Meal>
<Meal>
<thigh/>
<fillet/>
</Meal>
</Meals>
여기서 논리는 다음과 같습니다.
<steak>
그리고<fillet>
쇠고기 고기 - 아직 다른 식사의 일부가 아닌 한 식사의 쇠고기 고기 부분이 아닌 전후에 일어나는 일. 쇠고기 고기 후에 쇠고기 고기가 발생하면 새로운 쇠고기 고기의 요소에서 새로운 식사가 만들어집니다.<thigh>
그리고<drumstick>
닭고기는 닭고기가 아닌 닭고기가 아닌 전후에 일어나는 일은 아직 다른 식사의 일부가 아닌 한 식사의 일부입니다. 닭고기 후에 닭고기가 발생하면 새 닭고기의 요소에서 새로운 식사가 만들어집니다.<macaroni>
그리고<penne>
파스타는 파스타가 아닌 전후에 일어나는 일이 아직 다른 식사의 일부가 아닌 한 식사의 일부입니다. 파스타가 파스타 이후에 발생하면 새로운 파스타의 요소에서 새로운 식사가 만들어집니다.<ketchup>
그리고<mustard>
조미료입니다 - 그들은 모든 식사의 일부가 될 수 있습니다.
나는 자신과 요소가 efforeself로 시작했고, 요소를 시작했지만, 위의 성능을 수행하는 방법에 대한 이해로 벽에 달려 있습니다. vb.net 및 linq를 사용하고 있지만 C#을 읽을 수 있습니다.
생각이나 포인터가 있습니까?
해결책
다른 포럼에서 좋은 답변을 얻었고 여기에 마지막입니다.
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)
다른 팁
당신은 찾을 수 있습니다 linqpad 유용한. 나는 당신의 문제를 해결할 것입니다. 그러나 나는 당신이 지정한 조합 논리에 대해서는 명확하지 않습니다. 그것이 내가 이해할 때 예와 일치하지 않기 때문에 (예 : 모든 식사에서 겨자가 없는가?)
제휴하지 않습니다 StackOverflow