お問い合わせ

tel:0570-046-503

営業時間 10:00~17:00(定休日:土日祝日)

DataTableからLINQで抽出

   2015/08/17

.NET Framework 3.5よりLINQが実装され、

配列データから対象データを、より簡単に抽出することが可能になりました。


ここではDataTableの場合を扱います。

たとえば、対象の値を持つデータを抽出したい場合、

DataTableではSelectメソッドの中に条件を書くというのが

常套手段でした。

下記のようにLINQを用いると簡単で高速に対象行を抽出できます。

//linqで抽出
var drs = dt.AsEnumerable()
.Where(x => x["TargetCol"].ToString() == targetVal)
.Select(x => x);

//無ければnull
if (drs == null || drs.Count() == 0) return null;

return drs.CopyToDataTable();

LINQで抽出を行うために、dataTableでAsEnumerable()を実行します。

実行した結果に対して、where内で条件を指定します。

ここでは特定列で対象値に一致するという条件を指定しています。

そして、selectで取得します。

ちょうどSQLを逆から書いたような構文ですね。


抽出された結果は、EnumerableRowCollectionの配列で返されるため、

dataTableに変換するためには、

drs.CopyToDataTable()を実行してやる必要があります。

  • ブログランキング・にほんブログ村へ
  • FC2ブログランキングへ
  • ブログランキング ドット ネット
  • 人気ブログランキングへ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)