where子句由if评估

时间:2013-09-12 10:51:17

标签: linq entity-framework-5

我有一个linq查询,它会在特定日期返回医生的时间表,该工作正常:

var scheduledList = db_hms.Scheduled
    .Include("Natural_Person")
    .Include("Type_Schedule")
    .Where(s => s.id_medical_doctor == idMedic && s.date_time >= date && s.date_time <= EndDate).OrderBy(s => s.date_time).ToList();           

但是现在,我有2个额外的字段我需要过滤,所以我需要一种方法来评估是否applay过滤器,我正在考虑删除rhe orderbytoList()并做像是这样的事情:

if (idTipoConsulta != -1)
{
    scheduledList.Where(m => m.id_ps_schedule == idTipoConsulta);
}

if (idEspecialidad != -1)
{
    scheduledList.Where(m => m.id_specialty == idTipoConsulta);
}      

return scheduledList.OrderBy(s => s.date_time).ToList();

但它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

调用Where不会影响您调用它的对象 - 返回新应用过滤器的查询。所以你想要适当地使用返回值。例如:

if (idTipoConsulta != -1)
{
    scheduledList = scheduledList.Where(m => m.id_ps_schedule == idTipoConsulta);
}
// etc