@kotyのブログ

.NETとかJavaとかPythonとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

DataSet / DataTableに対してLINQを使う方法

追記:このエントリーが当ブログで一番アクセスが多いです。DataSetはまだかなり使われてるんですね。。。

追記終わり。

感動したんでポストしときます。

Entity Frameworkが登場したり、Silverlightじゃサポートされなかったりと、昨今はめっきり印象が薄いDataSetやDataTableですが、.NET Framework 1.1/2.0 アプリだとバリバリ使われまくってると思います。そんなアプリを.NET 3.5 に移行後、「よーしLinqつかっちゃうぞ!」と思って、いざDataTable.Rows. まで打ってインテリセンスを表示させてみると、いつもの拡張メソッドが出てきません。このガッカリ感はハンパない。DataRowCollectionはIEnumerableを実装してないんですねぇ。

とガッカリしていたのが半年ほど前でそのまま放置してたんですけど、最近見つけたのが上記ツイートにある話です。DataTable.AsEnumerable()なるメソッドで、Linqが使えるようになります。

var items = dt.AsEnumerable()
                .Where(x => x["col1"].ToString() == "1")
                .Select(x => x["col1"].ToString());

型付DataSetもこのとおり。

var TypedItems = TypedDt.AsEnumerable()
                            .Where(x => x.EmployeeID == 123)
                            .Select(x => x.Country);

参考:【LINQ to DataSet】http://msdn.microsoft.com/ja-jp/library/bb386977.aspx

作って覚えるVisual Basic 2015 デスクトップアプリ入門

作って覚えるVisual Basic 2015 デスクトップアプリ入門