首页 > 解决方案 > c# Linq/DBContext 在日期或更大或更小日期之间查询取决于传递的参数

问题描述

我必须根据传递参数的日期过滤数据:StartDate、EndDate,默认值为 null。

筛选:

  1. 如果两个参数都为空,则返回所有记录
  2. 如果开始日期已过但结束日期未过,则返回开始日期之后的所有记录
  3. 如果 EndDate 已通过但不是开始日期,则返回 EndDate 之前的所有行
  4. 如果两个日期都通过,则返回日期之间的记录。

    varointmentNoShow = _db.Appointments Where (x=> s.appointmentDate ?? ).ToList();

所以我需要单独的查询,或者我可以在一个查询中处理一些条件。

标签: c#asp.net-mvc-5entity-framework-6

解决方案


您需要编写一系列 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 
}

这是表示这一点的最基本方式。您当然可以清理它并以不同的方式使用条件,但这只是您可以获得的基本示例,因此您可以随意调整它。


推荐阅读