[英]LINQ issue with Equals statement
我收到以下错误:
var answerList = (from answer in db.QuestionAnswers
where answer.tLoginID.Equals(tId) && answer.pLoginID.Equals(pId)
&& answer.Submitted.Equals(submittedVal)
select answer).ToList();
错误是:
无法创建“System.Object”类型的常量值。 在此上下文中仅支持基元类型或枚举类型。
但是,当我将其更改为:
var answerList = (from answer in db.QuestionAnswers
where answer.tLoginID.Equals(tId) && answer.pLoginID.Equals(pId)
select answer).ToList();
然后我这样做:
answerList.Where(x => x.Submitted.Equals(submittedVal));
它有效...我错过了什么? 对我来说,这些陈述也在做同样的事情。 但我不确定它为什么会像这样工作。
更新:
我在看了@SergeyLitvinov提供的关于.Equals
的链接之后想出来,我检查的列Submitted
实际上是一个Boolean
而不是Integer
一旦我使类型与我的语句相同。 虽然我确实将它从.Equals
更改为==
。
错误来自LINQ to Entities查询提供程序,它正在尝试将查询表达式转换为SQL语句。 您的第二个示例在测试Submitted.Equals(submittedVal)
之前枚举您的LINQ to Entities查询,这意味着您在本地内存中使用标准LINQ to Objects(即它未转换为SQL)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.