Linq,其中自定义类列表与一年中小时数的两个DateTime值进行比较

本文关键字:两个 DateTime 比较 小时 列表 自定义 一年 Linq | 更新日期: 2023-09-27 18:21:48

我有一个自定义类的列表,我正试图从该列表中创建一个新列表,在该列表中我需要返回以当前年份的小时为单位的日期范围。我一直在尝试以下操作,但它返回的列表为零:

List<Core.tokenHistory> firstQuery = thl.Where(x =>
x.Date.Value.DayOfYear * 24 + x.Date.Value.Hour > day.Value.DayOfYear * 24 &&
x.Date.Value.DayOfYear * 24 + x.Date.Value.Hour < (day.Value.DayOfYear + 1) * 24)
.ToList(); 

这让我很沮丧,因为我前一天还以为这段代码能正常工作,或者这可能只是因为我在睡眠不足的情况下编程。

编辑:我已经将原始语句更改为使用DateTime的实际语句?而不是DateTime,这是我正在使用的自定义类:

        public class tokenHistory
    {
        DateTime? _date;
        string _action;
        string _recipient;
        int _tokens;
        int _balance;

        public tokenHistory(DateTime? date, string action, string recipient, int tokens, int balance)
        {
            this._date = date;
            this._action = action;
            this._recipient = recipient;
            this._tokens = tokens;
            this._balance = balance;
        }
        public DateTime? Date { get { return _date; } set { _date = value; } }
        public string Action { get { return _action; } set { _action = value; } }
        public string Recipient { get { return _recipient; } set { _recipient = value; } }
        public int Tokens { get { return _tokens; } set { _tokens = value; } }
        public int Balance { get { return _balance; } set { _balance = value; } }
    }

Linq,其中自定义类列表与一年中小时数的两个DateTime值进行比较

如果您第一次查询的列表跨越了多年,那么这是不可能的。我现在正在创建我自己的类,其中包含两个int,一个表示小时,一个用于年份。我不敢相信我花了一整天的时间才意识到这一点。。。