我收到以下错误:
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
更改为==
。
答案 0 :(得分:2)
错误来自LINQ to Entities查询提供程序,它正在尝试将查询表达式转换为SQL语句。您的第二个示例在测试Submitted.Equals(submittedVal)
之前枚举您的LINQ to Entities查询,这意味着您在本地内存中使用标准LINQ to Objects(即它未转换为SQL)。