@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者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

このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法

このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法

  • 作者:北野 唯我
  • 発売日: 2018/06/21
  • メディア: 単行本(ソフトカバー)