LINQ问题与Equals语句

时间:2014-01-31 17:40:00

标签: c# linq

我收到以下错误:

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更改为==

1 个答案:

答案 0 :(得分:2)

错误来自LINQ to Entities查询提供程序,它正在尝试将查询表达式转换为SQL语句。您的第二个示例在测试Submitted.Equals(submittedVal)之前枚举您的LINQ to Entities查询,这意味着您在本地内存中使用标准LINQ to Objects(即它未转换为SQL)。