【问题标题】:How do I use an IF statement on a datetime from Dictionary<string, List<datetime>> in C#如何在 C# 中 Dictionary<string, List<datetime>> 的日期时间上使用 IF 语句
【发布时间】:2018-06-19 22:28:34
【问题描述】:

我从数据库中提取的数据是(字符串,日期时间),我需要查看日期时间以查看它是否等于今天 @ 14:00 的 sysdate,但我不知道如何只查看日期时间字段来自列表。

int recordCount;

using (IDatabase db = SystemStatus.GetDatabase(_connectionStrings.stuff))
{
    const string query= @"
        SELECT DISTINCT string, date
        FROM table
        WHERE date > DATE_SUB(SYSDATE(), Interval 30 day) AND
              drop_date < DATE_SUB(NOW(), Interval 12 hour) AND 
              status_id = 2;";

    var records = db.Fetch<Dictionary<string, List<DateTime>>>(query);

    recordCount = records.Count;                               
}

【问题讨论】:

  • NPoco 。查询有效。数据通过了我的健康检查。一切正常,传递价值,如果返回高于 0,它将状态设置为坏并适当地发出警报。我的问题是提取日期来设置时间参数。我希望在下午 2 点之前与状态 2 之后的记录分开。在那之前的时间很好,我不知道如何在 mysql 中对时间戳进行排序,所以我试图创建一个 if 语句,但我似乎无法将字符串与日期时间分开
  • 我更新了我的答案。您不需要“if”语句,您需要一个条件来从您的字典中生成一个单独的列表。这很简单。

标签: c# list dictionary if-statement npoco


【解决方案1】:

您需要一个日期时间对象进行比较:

DateTime now = DateTime.Now;
DateTime dt = new DateTime(now.Year, now.Month, now.Day, 14, 0, 0); // 2 PM today

您不需要“if”语句。您需要使用对象查询 (LINQ)...

using System.Linq; 

// get everything past 2 PM today
var after2PMRecords = records.Where(r => r.Value > dt);

// get everything before 2 PM today
var before2PMRecords = records.Where(r => r.Value < dt);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2022-08-17
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多