LINQきもいきもい。
日本の原子力発電所の最大出力(キロワット)を、電力会社別にGroupして平均とって(Average)降順(OrderBy)で出力。
気持ち悪いのに、だんだん気持ちよくなってくる。ふしぎ。
元のXML
<?xml version="1.0" encoding="utf-8"?> <Plants> <Plant> <Name>川内原子力</Name> <Belong>九州電力</Belong> <Address>鹿児島県川内市</Address> <PlantNum>2</PlantNum> <Power>89000</Power> </Plant> <!-- 省略 -->
クエリ式
var query = from plant in doc.Root.Elements() group int.Parse( plant.Element( "Power" ).Value ) by plant.Element( "Belong" ).Value into power orderby power.Average() descending select new { Belong = power.Key, Power = power };
標準クエリ演算子(メソッド形式)
var query = doc.Root.Elements() .GroupBy( plant => plant.Element( "Belong" ).Value, plant => int.Parse( plant.Element( "Power" ).Value ) ) .Select( group => new { Belong = group.Key, Power = group } ) .OrderByDescending( group => group.Power.Average() );
出力
foreach ( var el in query ) { Console.WriteLine( el.Belong.ToString() ); Console.WriteLine( el.Power.Average() ); }
結果
東京電力 101811.764705882 中部電力 90425 関西電力 88800 九州電力 87633.3333333333 東北電力 74975 日本原子力発電㈱ 69575 四国電力 67400 中国電力 64000 北海道電力 57900 北陸電力 54000
しかしながら「東京電力 柏崎刈羽原子力発電所」は新潟中越沖地震の影響で現在運転停止状態。