我试图在我的linq代码中添加一个动态where子句。但是我收到以下错误。其他示例提供了相同的代码,但它们工作正常,因此不确定我是否错过了某些内容。
var toBeReturn = db.estimate.ToList();
if(sname != null)
{
toBeReturn = toBeReturn.Where(x => x.estimate_status == sname);
}
错误:
严重性代码说明项目文件行抑制状态
错误CS0266无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否缺少演员表?)
请帮忙
最佳答案
您忘了最后调用.ToList()
以获得List<T>
,它是toBeReturn
变量的类型:
toBeReturn = toBeReturn.Where(x => x.estimate_status == sname).ToList();
另外,我建议您反转逻辑,以便在
sname
变量具有值的情况下在SQL Server上过滤结果。在当前的实现中,您将从表中获取所有记录,然后在内存中过滤它们,这不是最有效的方法。var toBeReturn = (sname != null)
? db.estimate.Where(x => x.estimate_status == sname).ToList()
: db.estimate.ToList();
关于c# - Linq添加动态where子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43841016/