LINQ Lambda Where()未按预期进行筛选
我正在尝试使用LINQforEF构建一个查询,以根据一些基本逻辑过滤结果。出于某种原因,即使执行以下Where()函数并设置正确的参数,也会返回所有数据,而不是Where()的筛选结果 我已经运行了debug,以确保if()语句确实允许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
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