В предикате Where
вы можете использовать x => true
, чтобы сопоставить все. Мы можем объединить это понятие с альтернативной стороной троичного, обновив ваш пример следующим образом (обратите внимание, что я разбил запрос на две строки только для целей этого ответа):
var stats = Globals.ds.Tables[0].AsEnumerable();
// pass "where true" as alternative
var result = stats.Where(x => checkBox1.Checked == false ? x.Field<string>("some_field") == "whatever" : true);
После применения некоторых Для упрощения нашего логического логического c, это становится следующим:
var result = stats.Where(x => checkBox1.Checked || x.Field<string>("some_field") == "whatever");
Конечно, мы действительно когда-либо сделали бы что-то из этого, только если бы у нас была потребность для объединения логических проверок в один пункт. Потому что, в конце концов, where true
- это то же самое, что вообще не применять никакой фильтрации:
var stats = Globals.ds.Tables[0].AsEnumerable();
if (!checkBox1.Checked)
{
stats = stats.Where(x => x.Field<string>("some_field") == "whatever");
}
var result = stats.ToList();
Примечание : пример в вашем вопросе и простое объяснение на английском языке sh, которое вы предоставляете расходятся друг с другом. Не совсем ясно, означает ли проверка все или фильтрация. Этот ответ следует за примером - отмечен означает все. Если все наоборот (не отмеченное означает все), примеры будут выглядеть так:
// example 1
var result = stats.Where(x => checkBox1.Checked ? x.Field<string>("some_field") == "whatever" : true);
// example 2
var result = stats.Where(x => !checkBox1.Checked || x.Field<string>("some_field") == "whatever");
// example 3 (if statement only)
if (checkBox1.Checked)
{
stats = stats.Where(x => x.Field<string>("some_field") == "whatever");
}