我收到以下错误:
var answerList = (from answer in db.QuestionAnswers
where answer.tLoginID.Equals(tId) && answer.pLoginID.Equals(pId)
&& answer.Submitted.Equals(submittedVal)
select answer).ToList();
错误是:
无法创建类型为"系统对象"的常量值。只 此上下文支持基元类型或枚举类型。
但是,当我将其更改为:
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提供的链接后,我发现Submitted
.Equals
,一旦我使类型与我的语句相同,我正在检查的列实际上是一个Boolean
而不是Integer
。 虽然我确实把它从.Equals
改成了==
.
错误来自 LINQ to Entities 查询提供程序,该提供程序尝试将查询表达式转换为 SQL 语句。 您的第二个示例在测试Submitted.Equals(submittedVal)
之前枚举您的 LINQ to 实体查询,这意味着您在本地内存中使用标准 LINQ to 对象(即它不会转换为 SQL)。