【发布时间】:2019-12-31 03:11:13
【问题描述】:
几个月前我刚刚开始学习 asp.net,但遇到了一些问题。我在浏览器上收到此错误LINQ 实体无法识别System.DateTime GetDate() 方法,而此代码在Linq 中完美运行。根据我在几个论坛上阅读的内容,当Linq to Entities 无法将代码转换为 SQL 查询时会发生此错误。但我仍然无法弄清楚我的方法有什么问题。
这是具有GetDate() 方法的类
public class Cycle
{
private DateTime _Date;
public DateTime Date
{
get => _Date;
set => _Date = value;
}
public DateTime GetDate ()
{
return this._Date;
}
}
这是调用该方法的查询
var RouteList = from site in Sites
orderby site.Community.Name ascending
where site.Season.SeasonYear == 2019 && site.Yard.YardID == 1 && site.SiteType.SiteTypeDescription.Equals("A")
select new Status
{
Pin = site.Pin,
Community = site.Community.Name,
Cycle1 = ((from sbm in SBMs where sbm.CrewSite.SiteID == site.SiteID select new Cycle { Date = sbm.CrewSite.Crew.TodayDate }).OrderBy(x => x.Date).FirstOrDefault()).Equals(null)
? (DateTime?)null : ((from sbm in SBMs where sbm.CrewSite.SiteID == site.SiteID select new Cycle { Date = sbm.CrewSite.Crew.TodayDate }).OrderBy(x => x.Date).FirstOrDefault()).GetDate()
谁能帮我看看如何调整我的方法?
【问题讨论】:
-
GetDate() 无法转换为 SQL 语句。如果您只想要字段的日期部分,您可以使用 DbFunctions.TruncateTime()
-
我试过了,但还是出现同样的错误
-
试试
Cycle1 = ((from sbm in SBMs where sbm.CrewSite.SiteID == site.SiteID select new Cycle { Date = DbFunctions.TruncateTime(sbm.CrewSite.Crew) }).OrderBy(x => x.Date).FirstOrDefault()).Equals(null) ? (DateTime?)null : ((from sbm in SBMs where sbm.CrewSite.SiteID == site.SiteID select new Cycle { Date = DbFunctions.TruncateTime(sbm.CrewSite.Crew)}).OrderBy(x => x.Date).FirstOrDefault()).Date怎么样 -
你是个天才。有用。谢谢塞利姆
-
不客气,我已经添加了答案。请check
标签: c# asp.net-mvc entity-framework linq