Что ж, если вам нужно использовать тип_элемента_ чрезвычайной ситуации в качестве строки, тогда вместо передачи значений типа bools вы можете отправить список, содержащий текстовое представление типа аварийной ситуации. Например, чтобы настроить приведенный выше код, вы можете изменить сигнатуру метода на
public static DataTable GetHistory(DateTime from, DateTime to, List<string> types)
{
..
}
и затем передайте список, который выглядел следующим образом (например)
List<string> types =
new List<string> { "paramedics" };
or
List<string> types =
new List<string> { "paramedics", "police" };
Тогда вы можете адаптировать свой запрос для использования оператора SQL IN в предложении where. Затем преобразуйте список строк в строку, разделенную запятыми, например
string values = "'paramedics', 'police'"
Простой способ создать переменную значений - использовать
string values = string.Empty;
types.ForEach(s =>
{
if (!string.IsNullOrEmpty(values))
values += ",";
values += string.Format("'{0}'", s);
});
Кстати, вы можете использовать параметризованную команду, чтобы избежать внедрения SQL. Если у вас есть строка, вы можете просто сделать
string select =
"SELECT call_time, location, emergency_type where call_time between @from AND @to AND emergency_type IN " + values