所以我的情况是我有一个 linq-to-sql 模型,它不允许我的一个表中的日期为空。这是有意的,因为数据库不允许该字段中存在空值。我的问题是,当我尝试使用此模型编写 Linq 查询时,我无法再对该表进行左连接,因为日期不是“可为空”字段,因此我无法将其与“无”进行比较。
示例:有一个电影表 {ID,MovieTitle} 和一个放映表 {ID,MovieID,ShowingTime,Location}
现在我正在尝试写一个声明,将返回所有没有放映的电影。在 T.SQL 中,这看起来像:
Select m.*
From Movies m Left Join Showings s On m.ID = s.MovieID
Where s.ShowingTime is Null
现在在这种情况下,我可以在“位置”字段上测试 Null,但这不是我实际拥有的(只是一个简化的示例)。我所拥有的只是非空日期。
我正在尝试用 Linq 编写:
From m In dbContext.Movies _
Group Join s In Showings on m.ID Equals s.MovieID into MovieShowings = Group _
From ms In MovieShowings.DefaultIfEmpty _
Where ms.ShowingTime is Nothing _
Select ms
但是我收到一条错误消息
“是”运算符不接受“日期”类型的操作数。操作数必须是引用或可为空的类型。
有没有办法解决?模型是正确的,Showings:ShowTime 表中不应该有空值。但是如果你做了一个左连接,并且没有特定电影的放映时间,那么 ShowTime 应该是那部电影的无...
感谢大家的帮助。