DataTableにLinqしてデータがあるかを確認する

イラスト Linq

using System.Linq を利用

Linqを利用して、DataTable の中にある値を検索してみます。今回は条件に該当するレコードがあるかどうかの判定をします。

.Whereを利用する

DataTable の中に格納されているレコードをLinqを利用してDataRow配列を作成します。

Whereで、id <= 3 のレコードだけ抽出できます。

 DataRow[] rowSearch = dt.AsEnumerable().Where(row => (int)row["id"] <= 3).ToArray();
if (rowSearch.Length == 0)
{
   ///データがない場合の処理
}

.Whereで条件を記入する事ができます

Where中に出てくるrowはレコードを表していると考えたらOK

row[“id”]という指定ができ、idカラム中に格納されている値を抽出する事ができます。

Andでさらに絞り込みたい時は

And条件でさらに絞り込みたい時は .Whereを重ねる事で実現できます。

 DataRow[] rowSearch = dt.AsEnumerable().Where(row => (int)row["id"] <= 3).Where(row => (DateTime)row["date_end"] == DateTime.Now.AddDays((DateTime.Now.Day - 1) * -1).Date).ToArray();
if (rowSearch.Length == 0)
{
   ///データがない場合の処理
}

(DateTime)row[“date_end”]

の中に契約終了月が格納されています。idが3以下で、契約終了月が今月であるデータを抽出する条件式になっています。

条件にnullかどうかを判定したい

条件の中で、カラムに値が入っていないレコードを取得したいときは、DBNull.Valueで抽出する事が可能です。

 DataRow[] rowSearch = dt.AsEnumerable().Where(row => (int)row["id"] <= 3).Where(row => (DateTime)row["date_end"] == DBNull.Value).ToArray();
if (rowSearch.Length == 0)
{
   ///データがない場合の処理
}

コメント

タイトルとURLをコピーしました