亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

LINQ to SQL 檢查日期時間是否為空或小于當前日期

LINQ to SQL 檢查日期時間是否為空或小于當前日期

C#
慕碼人2483693 2021-12-05 16:32:09
我需要制作將運行 SQL 查詢的 LINQ 查詢    Select * from Employee where Employee.StartDate is null OR (Employee.StartDate is not null AND Employee.StartDate > GetDate())我試過以下代碼    Employee.Where(e => e.StartDate == null || (e.StartDate != null && e.StartDate > Datetime.Today);    Employee.Where(e => e.StartDate.HasValue == false || (e.StartDate.HasValue != false && e.StartDate > Datetime.Today);    Employee.Where(e => e.StartDate..Equals((DateTime?)null) || (e.StartDate.HasValue != false && e.StartDate > Datetime.Today);但它沒有生成正確的 SQL 來檢查兩者。
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

我似乎無法說出我在評論中的意思。幾乎可以肯定,該屬性StartDate已按要求映射。這可以通過數據注釋來完成......


[Required]

public DateTime? StartDate { get; set; }

...或通過流暢的映射,例如在OnModelCreating...


modelBuilder.Entity<Employee>()

    .Property(e => e.StartDate).IsRequired();

只有在這些情況下,EF 才會忽略 LINQ 表達式中的(非)空檢查,因為它知道屬性不能為空。


當然,根據需要標記可為空的屬性沒有多大意義,因此您應該使其不可空或不需要。


查看完整回答
反對 回復 2021-12-05
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

var thresholdDate = GetDate();
var employeesWithNewOrNoStartDate = dbContext.Employees
    .Where(employee => employee.StartDate == null
                    || employee.StartDate > thresholdDate);

用一句話來說:

從 all 的序列中Employees,只取那些Employees根本沒有StartDate的,或者有一個相當新的StartDate


查看完整回答
反對 回復 2021-12-05
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

var NewGroupEmployees = dbContext.Employees

.Where(employee => employee.StartDate == null

                || employee.StartDate > DateTime.Today).ToList();

這應該返回一個具有所需結果的列表。


您可以嘗試的另一個選項是在 SQL 中創建一個存儲過程并從您的應用程序中調用它。


查看完整回答
反對 回復 2021-12-05
  • 3 回答
  • 0 關注
  • 227 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號