C#でXMLからLINQtoXMLで必要な情報だけ抜き出してDataGridViewにバインドする

最近RubyonRailsのエントリーばっかりだったのですが、別にそれしかやっていないわけではありません。プロジェクトも並行で同時進行、言語もまちまち。なんとか混乱しないでこなしていますが、堤防決壊寸前ですな。

XDocument doc = XDocument.Parse(XMLの形をした文字列);
var query = from n in doc.Descendants(“user”)
        select new {
            id = n.Element(“id”).Value,
            user_name = n.Element(“user_name”).Value,
            telephone = n.Element(“telephone”).Value
        };

データグリッド.DataSource = query.ToList();

XMLファイルをXDocumentに読み込む場合は

XDocument.Load(ファイルパス);

となります。

LINQtoXMLで必要なノードだけを抽出して(今回は「user」というノードだけを抜き出しています)、データグリッドにバインドしています。

バインドするのはLINQの結果のままの状態ではなく、IListに明示的に変換してあげなければいけません。変換してやら無いとIEnumerableのままなのかな?バインドしてもデータグリッドに何も表示されませんでした。

コレを解決するのに半日悩んだ。。。