我試圖過濾具有特定日期的SQL表中的所有行。它適用於列不可爲空的情況,但如果不成立則失敗。使用Linq過濾可空的日期時間字段
這適用於不能爲空日期時間字段:
ent.MyTable.Where(e => e.MyDate.Day == 12);
顯然,這不是工作爲空的日期時間字段。做互聯網上的一些搜索後,我發現很多的「解決方案」這個問題看起來像到以下幾點:
ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);
不幸的是,這並不爲我工作的。而這是可以理解爲什麼如果我認爲這是錯誤消息:
「System.Nullable」不包含「日」的定義,並沒有擴展方法「日」接受一個類型的第一個參數「System.Nullable」可以找到(是否缺少using指令或程序集引用?)
我想避免獲取所有 SQL行,然後在.NET濾波器,因爲我只對極少數行的興趣。有沒有其他的方式,我目前沒有看到?可空日期
ent.MyTable.Where(e => e.MyDate.HasValue && e.Date.Value.Day == 12);
是'MyDate'類中的定義爲可空'DateTime'?如果是這樣,你的第二行不應該編譯。如果不是,那麼你的模型與數據庫不匹配。 – user3185569