![](/img/trans.png)
[英]What are the ways to create the LINQ query expression using query syntax dynamically?
[英]What is the correct syntax for using an expression in a Linq query?
我創建了一個表達式來過濾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
選項生成的表達式?
您需要將其作為lambda傳遞。 為了使其更具可讀性,您可以將整個表達式更改為使用lambda。
drivers = await _context.Drivers
.Where(driver => driver.Active)
.Where(expression)
.OrderBy(driver => driver.LastName)
.ThenBy(driver => driver.FirstName)
.ToListAsync();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.