是否可以使用字符串作为LINQ查询表达式?

mar*_*zzz 7 c# linq expression

如果某些变量有一些值,我需要提取一些记录.

例如,如果status> 0,我需要过滤结果,如:

where object.id=status
Run Code Online (Sandbox Code Playgroud)

否则,如果status = 0,我需要删除where where子句并返回所有元素.我会摆脱:

if(status>0)
   do a linq query with the where clauses
else
   do a link query with that where clauses
Run Code Online (Sandbox Code Playgroud)

代码太多,因为要检查的变量可能超过4-5.

是否有可能在LINQ上"注入"一种字符串?(所以我可以创建我的字符串并将其传递给LINQ).

我的意思是:

string myQuery="";
if(status>0)
   myQuery="where object.id=status";
else
   myQuery="";
Run Code Online (Sandbox Code Playgroud)

可能吗?(经典的mysql行为).

ham*_*mar 8

由于LINQ是懒惰的,你可以做到

var query = ...

if (status > 0)
{
    query = query.Where(o => o.id == status);
}
Run Code Online (Sandbox Code Playgroud)