Mesclar dois XElements

Não sei bem como perguntar isso, ou se isso existe, mas tenho a necessidade de mesclar dois XElements com um tomando precedência sobre o outro, para se tornar apenas um elemento.

A preferência aqui é VB.NET e Linq, mas qualquer linguagem seria útil se demonstrasse como fazer isso sem que eu codificasse manualmente e resolvesse cada elemento e atributo.

Por exemplo, digamos que eu tenha dois elementos. Me divirta sendo tão diferentes como eles são.

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>

O resultado de uma mesclagem seria

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

Observe algumas coisas: oheight valor de atributo de # 1 overrode # 2. ohand atributo e valor foi simplesmente copiado do # 1 (não existe no # 2). ostartinglineup atributo e valor de # 2 foi copiado (não existe em # 1). oPosition O elemento em # 1 foi copiado (não existe em # 2). oIdol o valor do elemento em # 1 substitui # 2, mas o atributo # 2 deconfirmed (não existe em # 1) é copiado.

Net net, # 1 tem prioridade sobre # 2 quando há um conflito (o que significa que ambos têm os mesmos elementos e / ou atributos) e onde não há conflito, ambos copiam para o resultado final.

Eu tentei pesquisar sobre isso, mas simplesmente não consigo encontrar nada, possivelmente porque as palavras que estou usando para pesquisar são muito genéricas. Quaisquer pensamentos ou soluções (especialmente para o Linq)?

questionAnswers(2)

yourAnswerToTheQuestion