Cod*_*rge 0 c# linq entity-framework entity-framework-6
使用:MVC 5,C#,VS 2013,EF6和CodeFirst,SQL Server 2012
我已经尝试了四种不同的方式来获取数据而没有任何问题.
IQueryable<vw_Results> qryResults = _db.vw_Results;
我遇到的问题是我有13个过滤器选项,所有13个的代码遵循相同的逻辑:
string fmVal = string.Empty;
if (!string.IsNullOrEmpty(form["Locations"]))
{
    fmVal = form["Locations"].ToString();
    qryResults = qryResults.Where(w => w.LOCATION.CompareTo(fmVal) == 0);
}
if (!string.IsNullOrEmpty(form["ddActionLevels"]))
{
    //qryResults = qryResults.Where(w => w.PAL_ID==form["ddActionLevels"].ToString());
    vbVal = form["ddActionLevels"].ToString(); ;
    //qryResults = qryResults.Where(w => w.AL == vbVal);
    qryResults.Where(w => w.AL.CompareTo(vbVal) >= 0);
}
if (!string.IsNullOrEmpty(form["btnGenericRpt"]))
{
    qryResults.Where(w => w.LOCATION != "BB1");
}
if (!string.IsNullOrEmpty(form["ddProjects"]))
{
    vbVal = form["ddProjects"].ToString();
    qryResults.Where(w => w.PROJECT == vbVal);
}
//...
myModel.Results = qryResults.ToList();
return View(myModel);
如果我只提供1个过滤器,我会得到我想要的数据.一旦我提供了超过1个过滤器,我得到"枚举没有产生结果",但第一个过滤器的数据集确实包含我正在过滤的数据.
我看到你的代码的主要问题是这样的行:
qryResults.Where(w => w.AL.CompareTo(vbVal) >= 0);
首先qryResults,计算a,.Where(...)但不要重新分配查询qryResults.
试试这个:
qryResults = qryResults.Where(w => w.AL.CompareTo(vbVal) >= 0);
虽然这并不能解释为什么你没有得到任何结果.当你得到正确的代码时,这将是一个你应该解决的问题.