【发布时间】:2015-01-17 20:13:26
【问题描述】:
以下代码:
var mids = _db.Members
.GroupBy(m => new { m.MemberID, m.CreatedDate })
.Where(m => m.All(s => s.Status == 1) && m.Key.CreatedDate.Date == DateTime.Today)
.Select(m=>m);
我收到运行时错误:LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化器、实体成员和实体导航属性
当我将 _db.Members.AsEnumerable() 添加到第一行时,它会起作用。
我的理解是 .AsEnumerable() 强制查询在客户端执行。因此,在上面的代码中,AsEnumerable 运算符将查询分为两部分,在服务器端选择并在客户端(分组依据、位置)休息。
有人可以验证我的理解是否正确吗?以及为什么没有 .AsEnumerable() 代码会失败?
【问题讨论】:
-
是的,你是对的。另一方面,您不能使用 linq to sql 语法比较日期