Я создал выражение для целей фильтрации оператора Linq:
Expression<Func<Driver, bool>> expression = null;
Это определяется на основе значения параметра действия:
switch (driver_type)
{
case "all": // remove any filters related to `driver_type`
expression = d => true;
break;
case "licensed":
expression = d => !(new string[] { "A", "B" }).Contains(d.DriverType);
break;
case "unlicensed":
expression = d => d.DriverType == "D";
break;
default:
expression = d => !(new string[] { "A", "B" }).Contains(d.DriverType);
break;
}
, которое затем используетсячтобы отфильтровать запрос Linq:
drivers = await (
from driver in _context.Drivers
where
(driver.Active == true)
&& expression <-- invalid
orderby driver.LastName, driver.FirstName
select driver
).ToListAsync();
Какой правильный синтаксис для этого?
Кстати, существует ли способ для параметра переключателя default
использовать выражение, сгенерированноеlicensed
опция?