我有麻煩在Linq的東西 - 也許有人可以給我一些提示。Linq到XML和多個變換
我有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>
and<mustard>
are 調味品 - 它們可以是任何 膳食的一部分。
我已經開始使用ElementsAfterSelf和ElementsBeforeSelf和TakeWhile,但是我正在運行到牆上,理解如何執行上述操作。我使用VB.NET和Linq,但可以閱讀C#。
任何想法或指針?
感謝。我正在使用LinqPad - 偉大的工具。芥末並不是每頓飯,因爲它只出現一次,因此根據它的位置,它是第一餐的一部分(下一餐,在上面的例子中,將基於牛肉何時切換到新牛肉)。 – 2009-10-23 19:54:12