call_time、location、emergency_type という列を持つ call という名前のデータベース テーブルがあり、救急隊員、警察、消防士の 3 種類の緊急事態があります。Windows フォームで、CheckBoxes 'paramedics'、'police'、'firefighters' を作成しました。ユーザーの選択を満たすすべてのテーブル列を取得したいと考えています。
関数を作成しました:
public static DataTable GetHistory(DateTime from, DateTime to, bool paramedics, bool police, bool firefighters)
{
string select =
"SELECT call_time, location, emergency_type where call_time between @from AND @to AND";
if(paramedics)
{
select += " emergency_type = 'paramedics' ";
}
if(paramedics && police)
{
select +=" emergency_type = 'paramedics' OR emergency_type = 'police';
}
...
}
ただし、このコードは非常に汚いように見えます。30 種類の緊急事態があった場合、30 種類になるからです。if ステートメントをすべて書く前に年をとります。
選択できるオプションが多数ある場合、選択した検索条件に一致するデータを取得するための実践を共有していただければ幸いです。
ありがとう!