C# Linq到实体过滤掉默认参数

C# Linq到实体过滤掉默认参数,c#,.net,linq,linq-to-entities,.net-4.5,C#,.net,Linq,Linq To Entities,.net 4.5,假设我有以下方法,其中需要填充insuredNumber,但其余三个参数可能包含以下默认值 方法签名: 然后,如何在结果Linq to Entites查询中忽略这些默认值?我尝试了以下方法,但返回的结果比预期的多,因为日期筛选不正确 查询: 我想我可以将查询分解为子查询,检查默认值,但我想看看这是否可以在一个语句中完成。您最好将其分解: var query = ctx.Portal_SurveyRecommendations .Where(c => c.CustNum == ins

假设我有以下方法,其中需要填充insuredNumber,但其余三个参数可能包含以下默认值

方法签名:

然后,如何在结果Linq to Entites查询中忽略这些默认值?我尝试了以下方法,但返回的结果比预期的多,因为日期筛选不正确

查询:


我想我可以将查询分解为子查询,检查默认值,但我想看看这是否可以在一个语句中完成。

您最好将其分解:

var query = ctx.Portal_SurveyRecommendations
    .Where(c => c.CustNum == insuredNumber);
if(surveyLocationNumber != -1)
    query = query.Where(l => l.LocationKey == surveyLocationNumber);
if(dateIssuedFilter != DateTime.MinValue)
    query = query.Where(di => di.DateRecIssued == null
                           || di.DateRecIssued.Value > dateIssuedFilter);
if(dateCompletedFilter != DateTime.MinValue)
    query = query.Where(dc => dc.DateRecComplete == null
                           || dc.DateRecComplete.Value > dateCompletedFilter);
var surveys = query.OrderBy(o => o.ReportKey).ThenBy(o => o.RecNumKey).ToList();

我也这么想。谢谢你,马克。
surveyLocationNumber = "-1"
dateIssuedFilter = DateTime.MinValue
dateCompletedFilter = DateTime.MinValue
var surveys = ctx.Portal_SurveyRecommendations.
                Where(c => c.CustNum.Equals(insuredNumber)).
                Where(l => l.LocationKey.ToString().Equals(surveyLocationNumber)).
                Where(di => di.DateRecIssued.Value > dateIssuedFilter || di.DateRecIssued.Value == null).
                Where(dc => dc.DateRecComplete.Value > dateCompletedFilter || dc.DateRecComplete.Value == null).
                OrderBy(o => o.ReportKey).ThenBy(o => o.RecNumKey).ToList();
var query = ctx.Portal_SurveyRecommendations
    .Where(c => c.CustNum == insuredNumber);
if(surveyLocationNumber != -1)
    query = query.Where(l => l.LocationKey == surveyLocationNumber);
if(dateIssuedFilter != DateTime.MinValue)
    query = query.Where(di => di.DateRecIssued == null
                           || di.DateRecIssued.Value > dateIssuedFilter);
if(dateCompletedFilter != DateTime.MinValue)
    query = query.Where(dc => dc.DateRecComplete == null
                           || dc.DateRecComplete.Value > dateCompletedFilter);
var surveys = query.OrderBy(o => o.ReportKey).ThenBy(o => o.RecNumKey).ToList();