LINQ,MySQL:WHERE子句中的空日期?

时间:2016-09-21 16:57:46

标签: c# mysql linq

我是LINQ的新手。我正在尝试转换现有的MySQL查询。我有一个事件表和一个构建" session"记录。

事件表包含许多varchar列,且至少有一列datetime列。

会话表有一个startId字段,该字段是返回事件表主键的链接,指定启动会话的事件。有endId字段可以是NULL(会话处于活动状态),也可以是指向结束会话的记录的事件表的指针。

我想搜索某个日期有效的会话。在MySQL中我可以说:

select
    *
from
    Sessions s
    inner join EventLogs eStart on s.StartId equals eStart.Id
    inner join EventLogs eEnd on s.EndId equals eEnd.Id
where
    '<some date string>' betwen eStart.Date and ifnull(eEnd.Date, now())

我还没有看到LINQ有一个between运算符,所以我做了下一个最好的事情。让我这一刻的是,我不知道如何在LINQ中表达ifnull(eEnd.Date, now())。我正在尝试:

var result = 
    from s in dbContext.Sessions
    join eStart in dbContext.EventLogs on s.StartId equals eStart.Id
    join eEnd in dbContext.EventLogs on s.EndId equals eEnd.Id
    where ('<some date string>' >= eStart.Date) 
        && ('<some date string>' <= (eEnd.Date ?? DateTime.Today))

但我被告知??运算符不能应用于DateTime类型的操作数。这里的魔力是什么?

0 个答案:

没有答案