C#中的通用日期时间列表比较

时间:2011-11-01 10:41:43

标签: c#

我有一个通用日期时间列表

List<DateTime> **PreviousDates** = //Some List of Dates

现在我想获取 PreviousDates 列表中的所有日期,其中月份和年份等于GivenDate的月份和年份。年。无论什么日子&amp;时间到了......

我尝试使用List.Contains()方法,但它会检查日期的所有部分,我只想检查月份和年份..

帮助我!

由于 普拉迪普

5 个答案:

答案 0 :(得分:1)

您需要使用Where方法。它将过滤列表,您可以将年份和月份与当前日期进行比较。

DateTime currentDate = DateTime.Now;
var filteredDates = previousDates.Where(
    d => d.Year == currentDate.Year && d.Month == currentDate.Month);

答案 1 :(得分:1)

您可以使用LINQ返回IEnumerable

PreviousDates.Where(d => d.Month == month && d.Year == year);

答案 2 :(得分:1)

您可以尝试类似

的内容
DateTime criteria = DateTime.Today;
List<DateTime> filtered = previousDates.Where(dt => dt.Month == criteria.Month && dt.Year == criteria.Year).ToList();

答案 3 :(得分:0)

previousDates.Where(d => d.Month == refDate.Month && d.Year == refDate.Year);

答案 4 :(得分:0)

您可以为间隔的开始和结束创建DateTime值:

DateTime start = new DateTime(GivenDate.Year, GivenDate.Month, 1);
DateTime end = start.AddMonths(1);

现在您可以轻松选择区间内的项目:

List<DateTime> inside =
  PreviousDates
  .Where(d => d >= start && d < end)
  .ToList();

(您当然可以将GivenDate.YearGivenDate.Month值与d.Year中的d.MonthWhere进行比较,但这样会更复杂,效率更低条件。)