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 ) );