Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ Lambda Where()未按预期进行筛选_Linq_Entity Framework 4 - Fatal编程技术网

LINQ Lambda Where()未按预期进行筛选

LINQ Lambda Where()未按预期进行筛选,linq,entity-framework-4,Linq,Entity Framework 4,我正在尝试使用LINQforEF构建一个查询,以根据一些基本逻辑过滤结果。出于某种原因,即使执行以下Where()函数并设置正确的参数,也会返回所有数据,而不是Where()的筛选结果 我已经运行了debug,以确保if()语句确实允许Where()在适当的时候运行,而且确实如此 我错过了什么 var dbReports = db.SubmitReports; if (Referee != String.Empty) dbReports.Where(u => (u.Refree

我正在尝试使用LINQforEF构建一个查询,以根据一些基本逻辑过滤结果。出于某种原因,即使执行以下Where()函数并设置正确的参数,也会返回所有数据,而不是Where()的筛选结果

我已经运行了debug,以确保if()语句确实允许Where()在适当的时候运行,而且确实如此

我错过了什么

var dbReports = db.SubmitReports;

if (Referee != String.Empty)
    dbReports.Where(u => (u.Refree == Referee || u.Ar1Official == Referee || u.Ar2Official == Referee || u.FourthOfficial == Referee));

if (TeamName != String.Empty)
    dbReports.Where(u => (u.HomeTeam == TeamName || u.VisitingTeam == TeamName));

if (PlayedOnStart != DateTime.MinValue && PlayedOnEnd != DateTime.MinValue)
    dbReports.Where(u => (u.PlayedOn >= PlayedOnStart && u.PlayedOn <= PlayedOnEnd));

if (StateAssociation != String.Empty)
    dbReports.Where(u => (u.StateAssociation == StateAssociation || u.StateAssociation2 == StateAssociation));

if (Division != String.Empty)
    dbReports.Where(u => u.Division == Division);

if (ProfessionalLeague != String.Empty)
    dbReports.Where(u => u.ProfessionalLeague == ProfessionalLeague);

if (AgeGroup != String.Empty)
    dbReports.Where(u => u.AgeGroup == AgeGroup);

return dbReports.ToList();
var dbReports=db.SubmitReports;
if(裁判员!=字符串.空)
dbReports.Where(u=>(u.Refree==裁判员| | u.ar1官方==裁判员| | u.ar2官方==裁判员| | u.FourthOfficial==裁判员));
if(TeamName!=String.Empty)
dbReports.Where(u=>(u.HomeTeam==TeamName | | u.VisitingTeam==TeamName));
if(playendnstart!=DateTime.MinValue&&playendonend!=DateTime.MinValue)
dbReports.Where(u=>(u.PlayedOn>=playendnstart&u.PlayedOn(u.StateAssociation==StateAssociation | | u.StateAssociation2==StateAssociation));
if(除法!=String.Empty)
dbReports.Where(u=>u.Division==Division);
if(职业联赛!=字符串.空)
其中(u=>u.ProfessionalLeague==ProfessionalLeague);
if(AgeGroup!=String.Empty)
dbReports.Where(u=>u.AgeGroup==AgeGroup);
返回dbReports.ToList();
Where不修改现有查询-它会创建一个新查询。您需要将调用的结果分配给Where,否则结果将被丢弃。请尝试以下操作:

IQueryable<Report> dbReports = db.SubmitReports;

if (...)
{
    dbReports = dbReports.Where(...);
}
IQueryable dbReports=db.SubmitReports;
如果(…)
{
dbReports=dbReports.Where(…);
}
Where不修改现有查询-它会创建一个新查询。您需要将调用的结果分配给Where,否则结果将被丢弃。请尝试以下操作:

IQueryable<Report> dbReports = db.SubmitReports;

if (...)
{
    dbReports = dbReports.Where(...);
}
IQueryable dbReports=db.SubmitReports;
如果(…)
{
dbReports=dbReports.Where(…);
}

您从不使用Where方法的返回值。Where不会修改它所应用的IEnumerable,而是返回一个Linq表达式,该表达式将在执行时(即调用ToList时)创建一个modify IEnumerable.

您从不使用Where方法的返回值。Where不会修改它所应用的IEnumerable,而是返回一个Linq表达式,该表达式将在执行时(即调用ToList时)创建一个modify IEnumerable