无法显示去年的记录

本文关键字:记录 显示 | 更新日期: 2023-09-27 18:14:27

我试图显示去年的记录,但没有显示任何结果。

如果我删除下面显示的代码,那么它会显示所有结果。

这是我正在使用的代码:

var trackFilter = Convert.ToString(DateTime.Now.AddDays(-365));
DateTime fromDate = DateTime.Now.AddDays(-365);
DateTime toDate = DateTime.Now;
daa = daa.Where(c => (trackFilter == "" ||
                c.TrackName.ToLower().Contains(trackFilter.ToLower()))
                &&
                (fromDate == DateTime.MinValue || fromDate <= c.Date)
                &&
                (toDate == DateTime.MaxValue || c.Date <= toDate)
                ).ToList();

我不知道我做错了什么,任何帮助都会很好!-谢谢:)

无法显示去年的记录

如果您只想要包含以前年份的名称,您可以尝试:

daa = daa.Where(c => c.TrackName.Contains(DateTime.Now.Year - 1)).ToList();

其他的比较都是不必要的

尝试:

var trackFilter = Convert.ToString(DateTime.Now.AddDays(-365));
DateTime fromDate = DateTime.Now.AddDays(-365);
DateTime toDate = DateTime.Now;
daa = daa.Where(c => (c.Date > fromDate.Date && c.Date <= toDate.Date)).ToList();

这应该会给你你想要的日期文件。

一旦你知道这是正确的工作,你可以添加回:

(trackFilter == string.Empty || c.TrackName.ToLower().Contains(trackFilter.ToLower()))

对于具有最小或最大日期部分的位,我可能会考虑以下内容:

(c.Date == DateTime.MinValue || c.Date==DateTime.MaxValue ||
(c.Date > fromDate.Date && c.Date <= toDate.Date))

我不喜欢这样做最小或最大值搜索的想法,因为我相信DateTime。

只是一个想法…如果您想要检索去年的日期,那么您提供了错误的标准,因为您从当前日期中减去365,而实际上您应该通过"year"日期部分进行过滤。如果你想获得LAST YEAR的记录,你的查询应该像这样…

int lastYear = DateTime.Now.AddYears(-1).Year;
daa = daa.Where(c => (trackFilter == "" ||
                c.TrackName.ToLower().Contains(trackFilter.ToLower()))
                &&
                c.Date.Year == lastYear).ToList();

这个表达式fromDate == DateTime.MinValue对我来说没有意义,因为fromDate显然永远不会等于DateTimeMinValue,因为你只是从当前日期减去365天

如果我不得不找到一个错误,我首先必须检查你的trackFilter字符串的内容是否不同于你在c.TrackName中使用的日期时间格式。(字符串。格式可以通过区域性产生不同的结果)