在SO上可能存在数十个重复标题的问题,如果这是重复的话,我很抱歉,但我对LINQ的经验有限,我无法找到解决方案。我正在尝试检索最后一条消息,FirstName和lastname,以及最后一条消息的发送日期,按identNumber分组。 SQL查询工作正常,LINQ返回:
Unable to cast the type 'System.Nullable`1' to type 'System.Object'. LINQ to Entities only supports casting EDM primitive or enumeration types
显然有些东西是空的,但我不确定正确的翻译是什么。
SQL:
SELECT e.identNumber, e.DateSent, e.FirstName, e.LastName
FROM Echo.vw_EchoChatMessages AS e,
(SELECT MAX(DateSent) AS MaxDate, identNumber
FROM Echo.vw_EchoChatMessages
GROUP BY identNumber ) MaxResults
WHERE e.identNumber = MaxResults.identNumber
AND e.DateSent = MaxResults.MaxDate
LINQ(我能得到最接近的):
var qry = from c in db.vw_EchoChatMessages
let maxDate = (from d in db.vw_EchoChatMessages select d.DateSent).Max()
where c.DateSent.Equals(maxDate)
select new { c.FirstName, c.LastName, c.DateSent };
请尽可能地告知我们!
答案 0 :(得分:3)
EF无法识别从Nullable<T>
到object
的隐式转换,编译器会为.Equals()
调用生成该转换。
将其更改为==
运算符,您应该没问题,因为规范定义了T
和Nullable<T>
之间的相等运算符。