Scal dwa XElements

Nie jestem do końca pewien, jak o to zapytać, czy nawet to istnieje, ale muszę połączyć dwa elementy XElements, z których jeden ma pierwszeństwo przed drugim, aby stać się tylko jednym elementem.

Preferowane są tutaj VB.NET i Linq, ale każdy język byłby pomocny, gdyby pokazał, jak to zrobić bez mojego kodowania, aby ręcznie wybrać i rozwiązać każdy element i atrybut.

Załóżmy na przykład, że mam dwa elementy. Humoruj mnie, że są tak różne, jak są.

1

<HockeyPlayer height="6.0" hand="left">
<Position>Center</Position>
<Idol>Gordie Howe</Idol>
</HockeyPlayer>

2.

<HockeyPlayer height="5.9" startinglineup="yes">
<Idol confirmed="yes">Wayne Gretzky</Idol>
</HockeyPlayer>

Rezultatem scalenia byłoby

<HockeyPlayer height="6.0" hand="left" startinglineup="yes">
<Position>Center</Position>
<Idol confirmed="yes">Gordie Howe</Idol>
</HockeyPlayer>

Zauważ kilka rzeczy:height wartość atrybutu # 1 zastąpiła # 2. Thehand atrybut i wartość zostały po prostu skopiowane z # 1 (nie istnieje w # 2). Thestartinglineup atrybut i wartość z # 2 zostały skopiowane (nie istnieje w # 1). ThePosition element # 1 został skopiowany (nie istnieje w # 2). TheIdol wartość elementu w # 1 przesłania # 2, ale # 2 atrybut atrybutuconfirmed (nie istnieje w # 1) jest kopiowany.

Net net, # 1 ma przewagę nad # 2, gdzie występuje konflikt (co oznacza, że ​​oba mają te same elementy i / lub atrybuty), a gdzie nie ma konfliktu, oba kopiują do wyniku końcowego.

Próbowałem wyszukać, ale nie mogę znaleźć niczego, być może dlatego, że słowa, których używam do wyszukiwania, są zbyt ogólne. Jakieś przemyślenia lub rozwiązania (szczególnie dla Linq)?

questionAnswers(2)

yourAnswerToTheQuestion