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)
{
///データがない場合の処理
}
コメント