[英]Entity Framework Core where clause extra condiition
我有这个简单的查询,问题是End
属性是DateTime?
类型,我想包括该值为空的记录,但我似乎无法做到。 我尝试使用三元运算符,但仍然没有结果
await _context.Registos
.Where(r => r.Start.Date >= DateStart.Date && r.End.HasValue ? r.End.Value <= DateEnd.Date : !r.End.HasValue )
.AsNoTracking()
.ToListAsync();
一种更清洁的方式,如下所示:
await _context.Registos
.Where(r => r.Start.Date >= DateStart.Date
&& (r.End == null || r.End.Value <= DateEnd.Date))
.AsNoTracking()
.ToListAsync();
await _context.Registos
.Where(r => r.Start.Date >= DateStart.Date &&
(!r.End.HasValue || (r.End.Value <= DateEnd.Date)) )
.AsNoTracking()
.ToListAsync();
在 C# 中拥有一个没有被赋值的变量的唯一方法是让它成为一个局部变量 - 在这种情况下,在编译时你可以通过尝试读取它来判断它不是绝对赋值的: )
我怀疑你真的想要Nullable<DateTime>
(或 DateTime? 使用 C# 语法糖) - 让它开始为 null,然后分配一个正常的 DateTime 值(它将被适当转换)。 然后,您可以与 null(或使用 HasValue 属性)进行比较,以查看是否已设置“真实”值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.