Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq添加动态where子句_C#_Linq - Fatal编程技术网

C# 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

我试图在我的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()
,以获取
列表
,该列表是
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++开发者会怎么说?