[英]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.