簡體   English   中英

如何使用LINQ和Entity Framework根據條件設置參數

[英]How do I set a parameter based on a condition using LINQ and Entity framework

這是我的代碼:

await ctx.Education.AsNoTracking()
        .Where(e => e.EmployeeNumber == employeeNumber)
        .Select(e => new EducationDTO {
                Id = e.EducationID,
                StartDate =  DbFunctions.CreateDateTime(e.EducationEntryYear , 1, 1, 0, 0, 0) ?? DateTime.Now,
                EndDate = DbFunctions.CreateDateTime(e.EducationGraduationYear, 1, 1, 0, 0, 0),
        })
        .ToListAsync().ConfigureAwait(false);

在某些情況下,“ e.EducationEntryYear”為0,結果返回此異常Conversion failed when converting date and/or time from character string.

如果e.EducationEntryYear為0,將第一個參數作為當前年份的最簡單方法是什么

使用條件( ? )運算符。

await ctx.Education.AsNoTracking()
        .Where(e => e.EmployeeNumber == employeeNumber)
        .Select(e => new EducationDTO {
                Id = e.EducationID,
                StartDate =  DbFunctions.CreateDateTime(e.EducationEntryYear == 0 ? DateTime.Now.Year : e.EducationEntryYear, 1, 1, 0, 0, 0) ?? DateTime.Now,
                EndDate = DbFunctions.CreateDateTime(e.EducationGraduationYear, 1, 1, 0, 0, 0),
        })
        .ToListAsync().ConfigureAwait(false);

您目前在哪里

e.EducationEntryYear

替換為

e.EducationEntryYear == 0 ? System.DateTime.Now.Year : e.EducationEntryYear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM