[英]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.