c# - c# Linq/DBContext 在日期或更大或更小日期之间查询取决于传递的参数
问题描述
我必须根据传递参数的日期过滤数据:StartDate、EndDate,默认值为 null。
筛选:
- 如果两个参数都为空,则返回所有记录
- 如果开始日期已过但结束日期未过,则返回开始日期之后的所有记录
- 如果 EndDate 已通过但不是开始日期,则返回 EndDate 之前的所有行
如果两个日期都通过,则返回日期之间的记录。
varointmentNoShow = _db.Appointments Where (x=> s.appointmentDate ?? ).ToList();
所以我需要单独的查询,或者我可以在一个查询中处理一些条件。
解决方案
您需要编写一系列 if 语句来处理此问题。
if(StartDate == SomeDate && EndDate == Somdate)
{
return ALL Records after start date but before enddate
}
else if(StartDate == SomeDate && EndDate == Null)
{
return all records after StartDate
}
else if(StartDate == null && EndDate == SomeDate )
{
return all records before EndDate
}
else
{
Return all records
}
这是表示这一点的最基本方式。您当然可以清理它并以不同的方式使用条件,但这只是您可以获得的基本示例,因此您可以随意调整它。
推荐阅读
- javascript - Javascript 数组显示 [object object] 而不是显示文本
- php - Laravel:在雄辩的查询中获取额外的列(来自其他模型)
- jmeter - 在非 GUI 模式下合并结果插件 jmeter
- json - 从 httpbuilder-ng 获取原始 json 字符串或客户杰克逊映射器获取请求
- python - 反转 GPIO 输入
- php - 如何正确处理 AWS 、 CLoudFront 视频流?
- jsf - 在 primefaces 日历中完全表现怪异
- javascript - 在汇总中,如何让 --external 在命令行上直接指向要排除的模块?(没有节点解析插件)
- python - 根据序列数据在 pandas 中创建一个额外的列
- oracle - Oracle 列中的位数组