Asp.net 使用可空日期实体框架进行查询

Asp.net 使用可空日期实体框架进行查询,asp.net,entity-framework-5,Asp.net,Entity Framework 5,我试图在实体框架上运行以下命令,但得到一个关于GetValueOrDefault() 如何比较其中一个日期可为空的两个日期?对于问题中可为空的部分,您可以先检查是否有值,如果有,则进行比较 但是它会抱怨使用了Date属性,您可以使用EntityFunctions.TruncateTime DateTime date = DateTime.Now.Date; var holding = context.AVRHoldings .Where(x => x.Ex

我试图在实体框架上运行以下命令,但得到一个关于
GetValueOrDefault()


如何比较其中一个日期可为空的两个日期?

对于问题中可为空的部分,您可以先检查是否有值,如果有,则进行比较

但是它会抱怨使用了
Date
属性,您可以使用
EntityFunctions.TruncateTime

DateTime date = DateTime.Now.Date;

var holding =
    context.AVRHoldings
            .Where(x => x.ExpirationDate.HasValue && x.ExpirationDate.Value == date)
            .FirstOrDefault();

Assert.IsNotNull(holding);

holding =
    context.AVRHoldings
            .Where(x => 
                 x.ExpirationDate.HasValue && 
                 EntityFunctions.TruncateTime(x.ExpirationDate.Value) == date.Date)
            .FirstOrDefault();

Assert.IsNotNull(holding);

你犯了什么错误?如果其中一个为空,您希望发生什么?
DateTime date = DateTime.Now.Date;

var holding =
    context.AVRHoldings
            .Where(x => x.ExpirationDate.HasValue && x.ExpirationDate.Value == date)
            .FirstOrDefault();

Assert.IsNotNull(holding);

holding =
    context.AVRHoldings
            .Where(x => 
                 x.ExpirationDate.HasValue && 
                 EntityFunctions.TruncateTime(x.ExpirationDate.Value) == date.Date)
            .FirstOrDefault();

Assert.IsNotNull(holding);