2012-07-26 254 views
0

我在C#ASP.Net中创建报表,在报表中我可以过滤两个不同日期之间创建的数据(例如开始日期:7月15日和7月17日结束日期),但是当它谈到在某一天创建过滤数据(如开始日期:7月15日和结束日期:7月15日)查询不检索任何东西......按日期和时间过滤C#

//Code from OutletDistributor.aspx.cs 
ReportManager master = ObjectFactory.GetInstance<ReportManager>(); 
ReportResponse responce = new ReportResponse(); 
if (ddDistributor == Guid.Empty) 
    responce = master.GetAllOutletDistributor(sDate, EDate); 
else 
    responce = master.GetOutletDistributor(sDate, EDate, ddDistributor); 
ReportViewer1.Reset(); 
ReportViewer1.LocalReport.DataSources.Clear(); 
ReportViewer1.ProcessingMode = ProcessingMode.Local; 
var stream = Assembly.GetAssembly(typeof(SampleReport)).GetManifestResourceStream(responce.ReportResource); 
ReportDataSource reportDataSource = new ReportDataSource(responce.ReportDataSet, responce.ReportDataSource); 
stream = RdlcReportHelper.TranslateReport(stream); 
ReportViewer1.LocalReport.DataSources.Add(reportDataSource); 
ReportViewer1.LocalReport.LoadReportDefinition(stream); 
ReportViewer1.LocalReport.DisplayName = ResourceHelper.GetText(null, "hq.rpt.outletdist.heading"); 
ReportViewer1.LocalReport.Refresh(); 

//Code from ReportManager.cs 
//Filter All Outlet Distributor 
public ReportResponse GetAllOutletDistributor(DateTime StartDate, DateTime EndDate) { 
    ReportResponse report = new ReportResponse(); 
    report.ReportResource = "Distributr.HQ.Lib.Reports.RcdlFiles.OutletDistributor.rdlc"; 
    List<OutletReportItem> Report = _outletReport.GetAllOutlets() 
    .Where(p => p.CreationDate >= StartDate && p.CreationDate <= EndDate).ToList(); 
    Report.ForEach(n => report.ReportDataSource.Add(n)); 
    report.ReportDataSet = "dsOutletDistributor"; 
    return report; 
} 

回答

1

我认为StartDateEndDate都包含时间分量。删除它使用Date属性:

StartDate = StartDate.Date; 
EndDate = EndDate.Date; 

// your query goes here... 
0

在这种情况下您的日期是在查询相同的使用(而不是差)“=”

0

其实,你的代码List<OutletReportItem> Report = _outletReport.GetAllOutlets().Where(p => p.CreationDate >= StartDate && p.CreationDate <= EndDate).ToList()时初始化对象的DateTime所以日期的默认值,小时,分钟和秒为'00'。所以我认为你可以使用DateTime.Compare()