我试图在我的linq代码中添加一个动态where子句.但是我收到以下错误.其他样本提供相同的代码但它们工作正常,所以我不确定我是否错过了什么.
var toBeReturn = db.estimate.ToList();
if(sname != null)
{
toBeReturn = toBeReturn.Where(x => x.estimate_status == sname);
}
Run Code Online (Sandbox Code Playgroud)
错误:
严重级代码说明项目文件行抑制状态错误CS0266无法将类型"System.Collections.Generic.IEnumerable"隐式转换为"System.Collections.Generic.List".存在显式转换(您是否错过了演员?)
请帮忙
你忘了.ToList()在最后调用以获得变量List<T>的类型toBeReturn:
toBeReturn = toBeReturn.Where(x => x.estimate_status == sname).ToList();
Run Code Online (Sandbox Code Playgroud)
此外,我建议您反转逻辑,以便在sname变量具有值时过滤SQL服务器上的结果.在当前的实现中,您从表中获取所有记录,然后在内存中过滤它们,这不是最有效的方法.
var toBeReturn = (sname != null)
? db.estimate.Where(x => x.estimate_status == sname).ToList()
: db.estimate.ToList();
Run Code Online (Sandbox Code Playgroud)