C# Linq添加动态where子句
我试图在我的linq代码中添加一个动态where子句。但是我得到了以下错误。其他示例提供了相同的代码,但它们工作正常,因此我不确定是否遗漏了一些内容C# Linq添加动态where子句,c#,linq,C#,Linq,我试图在我的linq代码中添加一个动态where子句。但是我得到了以下错误。其他示例提供了相同的代码,但它们工作正常,因此我不确定是否遗漏了一些内容 var toBeReturn = db.estimate.ToList(); if(sname != null) { toBeReturn = toBeReturn.Where(x => x.estimate_status == sname); } 错误: 严重性代码说明项目文件行抑制状态 错误CS0266无法将类型“System
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()
,以获取列表
,该列表是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#(例如,与模板化C++相比)给出了“清晰”的错误。这里的错误相当严重。但是,如果一个人甚至不尝试阅读和理解信息,这种清晰性就被浪费了。在你判断OP之前,请记住,这里的人会问一些基本的问题,这样他们就可以把它应用到更复杂的问题上。如果你读了我的回复,我一直在解决这个错误。这就是为什么我来到这里是为了从外部了解我所错过的。真的吗@xanatos真的吗?虽然对于一个有经验的C#开发人员来说,错误信息似乎很明显,但对每个人来说可能都不是这样。当你说我们很幸运C#(与模板C++相比)给出了“清晰”的错误时,我想这就是你的观点。但是你认为一个有经验的C++开发者会怎么说?