C#でXMLでLINQでクエリ式で、複数の子要素に対してjoinする

基本的にXElementで触ってる
こんな感じのXMLがある

<Characters>
	<Character id="1">
		<Name>山田英子</Name>
		<Skills>
			<Skill id="1" />
			<Skill id="2" />
			<Skill id="3" />
		</Skills>
	</Character>
	<Character id="2">
		<Name>鈴木美子</Name>
		<Skills>
			<Skill id="4" />
			<Skill id="5" />
			<Skill id="6" />
		</Skills>
	</Character>
</Characters>

<Skills>
	<Skill id="1">
		<Name>ファイヤー</Name>
	</Skill>
	<Skill id="2">
		<Name>アイスストーム</Name>
	</Skill>
	<Skill id="3">
		<Name>ダイアキュート</Name>
	</Skill>
	<Skill id="4">
		<Name>ブレインダムド</Name>
	</Skill>
	<Skill id="5">
		<Name>ジュゲム</Name>
	</Skill>
	<Skill id="6">
		<Name>ばよえ~ん</Name>
	</Skill>
</Skills>

こんな感じでselect文の中でjoinする

IEnumerable<XElement> characterAndSkill =
	from t_character in Characters.Elements()
	select new XElement( "Character",
		t_character.Attribute( "id" ),
		t_character.Element( "Name" ),
		new XElement( "Skills",
			from t_characterskill in t_character.Element( "Skills" ).Elements()
			join t_skill in Skills.Elements()
			on (int)t_characterskill.Attribute( "id" ) equals (int)t_skill.Attribute( "id" )
			select t_skill
		)
	);