这似乎确实应该起作用:
var result = (from x in Db.RebateDetail
where batch != null && batch != "" ? x.BatchNumber.Value == Convert.ToInt32(batch) : x.DatetimeCreated.Date >= Convert.ToDateTime(fromDate).Date && x.DatetimeCreated.Date <= Convert.ToDateTime(toDate).Date
select new
{
id = x.Id,
batchNumber = x.BatchNumber,
firstName = x.FirstName,
checkDate = x.CheckDate.Value.ToString("MM/dd/yy") ?? "",
checkNumber = x.CheckNumber
}).ToList();
出现“ Nullable对象必须具有值”的checkDate错误。
那不是什么吗?应该做什么? 我对此进行了尝试,但似乎无法使其满意。
更新:这是使用Entity Framework和LinqToEF
答案 0 :(得分:3)
当前,“如果CheckDate
为空”将产生一个System.InvalidOperationException
而不是使用??
运算符的RHS上的值,因此错误“可为空的对象必须具有一个值“。
您需要确保LHS返回值或RHS返回值。
您要查找的是条件运算符 ?:
checkDate = x.CheckDate.HasValue ?
x.CheckDate.Value.ToString("MM/dd/yy") : string.Empty