我的EF查询无法返回c#中的日期时间

时间:2016-07-27 03:04:41

标签: c# sql-server entity-framework datetime

我有这个数据库,你可以看到:

enter image description here

在我的代码中,我想返回一些具有日期时间条件的记录,如您所见:

private void lblSubmitDate_EditValueChanged(object sender, EventArgs e)
{
  DateTime subDateTime = Convert.ToDateTime(lblSubmitDate.EditValue).Date;
            gridControlDocument.DataSource =
                new BindingList<Document>(_documentRepository
                .Get()
                .Where(i => i.SubmitDateTime==subDateTime)
                .ToList())
                { AllowNew = true };
}

但没有记录返回。

我输入的图片:

enter image description here

sqlprofiler中的结果:

exec sp_executesql N'SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Number] AS [Number], 
    [Extent1].[Class] AS [Class], 
    [Extent1].[Discipline] AS [Discipline], 
    [Extent1].[Unit] AS [Unit], 
    [Extent1].[SubmitDateTime] AS [SubmitDateTime]
    FROM [dbo].[Documents] AS [Extent1]
    WHERE [Extent1].[SubmitDateTime] = @p__linq__0',N'@p__linq__0 datetime2(7)',@p__linq__0='2016-07-27 00:00:00'

2 个答案:

答案 0 :(得分:2)

乔希说的是对的。

  

您将永远不会检索任何值,因为您正在解析   DateTime,但只接受Date部分。这意味着时间   部分将是00:00:00:

您必须使用$("#39aa995f-2ba5-4316-9c79-ef5b3d58d63d").velocity({ translateX: [4000, -600], },{ duration: 9000, easing: "lnear", delay: 0 }); 才能获得日期

EntityFunction.TruncateTime

答案 1 :(得分:1)

您将永远不会检索任何值,因为您正在解析DateTime,但只接受Date部分。这意味着Time部分将是00:00:00:

DateTime subDateTime = Convert.ToDateTime(lblSubmitDate.EditValue).Date;

当您尝试选择行时,您将与具有时间组件的SubmitDateTime进行比较:

gridControlDocument.DataSource = new BindingList<Document>(_documentRepository.Get().Where(i => i.SubmitDateTime==subDateTime).ToList()) { AllowNew = true };

您需要将数据库字段中的Date部分与用户选择中已解析的Date进行比较。