pagedList 中的多个查询
Multiple queries in pagedList
我传递了一些查询字符串来过滤分页列表中的结果,但是一个查询覆盖了另一个,如何在分页列表中进行多重过滤?
这是我的代码:
string _dataIni = null;
string _dataFim = null;
IPagedList ocorrencias = null;
if(codOccu > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.ID_OCORRENCIA == codOccu)
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
}
if (nomeEmp.Length > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp))
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
}
if(dtAbert != null && dtFinal != null)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal)
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
//
if (codOccu == 0 && nomeEmp == "" && dtAbert == null && dtFinal == null)
ocorrencias = db.CRM_OCORRENCIAS
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
ViewBag.DataIni = _dataIni;
ViewBag.DataFim = _dataFim;
ViewBag.Empresas = nomeEmp;
return View(ocorrencias);
看起来查询确实被覆盖了。您可以附加多个 where 子句。我还没有编译它,但试试这个
if (codOccu > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.ID_OCORRENCIA == codOccu)
.OrderByDescending(o => o.ID_OCORRENCIA);
}
if (nomeEmp.Length > 0)
{
ocorrencias = ocorrencias.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp))
.OrderByDescending(o => o.ID_OCORRENCIA);
}
if (dtAbert != null && dtFinal != null)
{
ocorrencias = ocorrencias.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal)
.OrderByDescending(o => o.ID_OCORRENCIA);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
//
if (codOccu == 0 && nomeEmp == "" && dtAbert == null && dtFinal == null)
ocorrencias = db.CRM_OCORRENCIAS;
return return View(ocorrencias.OrderByDescending(o => o.ID_OCORRENCIA).ToPagedList(pagina, 40));
有了上面的 post 并期待在微软教程中我设法找到这个教程:sorting, filtering and paging with entity framework
我的解决方案最终是这样的:
var ocorrencias = from s in db.CRM_OCORRENCIAS
select s;
if(codOccu > 0)
{
ocorrencias = ocorrencias.Where(o => o.ID_OCORRENCIA == codOccu);
}
if (!String.IsNullOrEmpty(nomeEmp))
{
ocorrencias = ocorrencias.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp));
}
if (dtAbert != null && dtFinal != null)
{
ocorrencias = ocorrencias.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
return View(ocorrencias.ToPagedList(pagina, 40));
我传递了一些查询字符串来过滤分页列表中的结果,但是一个查询覆盖了另一个,如何在分页列表中进行多重过滤?
这是我的代码:
string _dataIni = null;
string _dataFim = null;
IPagedList ocorrencias = null;
if(codOccu > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.ID_OCORRENCIA == codOccu)
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
}
if (nomeEmp.Length > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp))
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
}
if(dtAbert != null && dtFinal != null)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal)
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
//
if (codOccu == 0 && nomeEmp == "" && dtAbert == null && dtFinal == null)
ocorrencias = db.CRM_OCORRENCIAS
.OrderByDescending(o => o.ID_OCORRENCIA)
.ToPagedList(pagina, 40);
ViewBag.DataIni = _dataIni;
ViewBag.DataFim = _dataFim;
ViewBag.Empresas = nomeEmp;
return View(ocorrencias);
看起来查询确实被覆盖了。您可以附加多个 where 子句。我还没有编译它,但试试这个
if (codOccu > 0)
{
ocorrencias = db.CRM_OCORRENCIAS.Where(o => o.ID_OCORRENCIA == codOccu)
.OrderByDescending(o => o.ID_OCORRENCIA);
}
if (nomeEmp.Length > 0)
{
ocorrencias = ocorrencias.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp))
.OrderByDescending(o => o.ID_OCORRENCIA);
}
if (dtAbert != null && dtFinal != null)
{
ocorrencias = ocorrencias.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal)
.OrderByDescending(o => o.ID_OCORRENCIA);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
//
if (codOccu == 0 && nomeEmp == "" && dtAbert == null && dtFinal == null)
ocorrencias = db.CRM_OCORRENCIAS;
return return View(ocorrencias.OrderByDescending(o => o.ID_OCORRENCIA).ToPagedList(pagina, 40));
有了上面的 post 并期待在微软教程中我设法找到这个教程:sorting, filtering and paging with entity framework 我的解决方案最终是这样的:
var ocorrencias = from s in db.CRM_OCORRENCIAS
select s;
if(codOccu > 0)
{
ocorrencias = ocorrencias.Where(o => o.ID_OCORRENCIA == codOccu);
}
if (!String.IsNullOrEmpty(nomeEmp))
{
ocorrencias = ocorrencias.Where(o => o.CLIENTES.NOMEFAN.Contains(nomeEmp) || o.CLIENTES.NOMERAZAO.Contains(nomeEmp));
}
if (dtAbert != null && dtFinal != null)
{
ocorrencias = ocorrencias.Where(o => o.DTABERTURA >= dtAbert && o.DTABERTURA <= dtFinal);
_dataIni = Convert.ToDateTime(dtAbert).ToString("yyyy-MM-dd");
_dataFim = Convert.ToDateTime(dtFinal).ToString("yyyy-MM-dd");
}
return View(ocorrencias.ToPagedList(pagina, 40));