C# 实体框架日期解析

C# 实体框架日期解析,c#,entity-framework,C#,Entity Framework,我正在尝试执行LINQ到实体的查询(我对EF仍然很陌生,并且正在学习它与LinqToSQL的区别),我正在尝试这样做: DateTime begin = new DateTime(2011, 1, 1); Apps = (from app in context.Instances where app.ReleaseDate.Date == begin select new ScalpApp {

我正在尝试执行LINQ到实体的查询(我对EF仍然很陌生,并且正在学习它与LinqToSQL的区别),我正在尝试这样做:

DateTime begin = new DateTime(2011, 1, 1);

Apps = (from app in context.Instances
                 where app.ReleaseDate.Date == begin
                 select new ScalpApp
                 {
                 Image = app.Image,
                 PublisherName = app.PublisherName,
                 }).ToList();
虽然这在LinqPad中有效,但在我的代码中却没有。引发的异常是:

仅初始值设定项、实体成员和 实体导航属性为 支持


在林克托夫我该怎么做?DB中的字段是完整的DateTime(带有时间代码),我正在尝试仅基于日期进行解析。

此字段甚至可能使用日期字段索引:

DateTime begin = new DateTime(2011, 1, 1);
DateTime end = new DateTime(2011, 1, 2);

Apps = (from app in context.Instances
             where 
               (app.ReleaseDate >= begin) and
               (app.ReleaseDate < end)
             select new ScalpApp
             {
             Image = app.Image,
             PublisherName = app.PublisherName,
             }).ToList();
DateTime begin=newdatetime(2011,1,1);
DateTime end=新的DateTime(2011,1,2);
Apps=(来自context.Instances中的app
哪里
(app.ReleaseDate>=开始)和
(应用程序发布日期<结束)
选择新的应用程序
{
Image=app.Image,
PublisherName=app.PublisherName,
}).ToList();

您不能简单地使用“app.ReleaseDate.Data”,但您可以:

var begin = new DateTime(2011, 1, 1);
var end = begin.AddHours(24);

Apps = (from app in context.Instances
             where 
               (app.ReleaseDate >= begin) and
               (app.ReleaseDate < end)
             select new ScalpApp
             {
             Image = app.Image,
             PublisherName = app.PublisherName,
             }).ToList();
var begin=newdatetime(2011,1,1);
var end=begin.AddHours(24);
Apps=(来自context.Instances中的app
哪里
(app.ReleaseDate>=开始)和
(应用程序发布日期<结束)
选择新的应用程序
{
Image=app.Image,
PublisherName=app.PublisherName,
}).ToList();

EF无法将获取
Date
部分
DateTime
转换为SQL代码。但它有一种方法可以转换为标准截断时间函数:

DateTime begin = new DateTime(2011, 1, 1);

Apps = (from app in context.Instances
        where EntityFunctions.TruncateTime(app.ReleaseDate) == begin
        select new ScalpApp {
            Image = app.Image,
            PublisherName = app.PublisherName,
        }).ToList();

是的,这就是我最后不得不去的地方。有点恼火,但哦,好吧。尽管如此,我还是开始了。
DateTime begin = new DateTime(2011, 1, 1);

Apps = (from app in context.Instances
        where EntityFunctions.TruncateTime(app.ReleaseDate) == begin
        select new ScalpApp {
            Image = app.Image,
            PublisherName = app.PublisherName,
        }).ToList();