首页 > 解决方案 > 我想根据日期时间过滤数据(行)

问题描述

我想在日期时间列的基础上过滤我的数据(行)。例如,当日期时间列是 00:00:00.000 时间的最后一个日期(31/30)时,我想要数据(行)。

我有一个数据文件,其中有一列包含 2018-10-28 00:56:98.003 之类的数据,并且希望在 00:00:00.000 获得该月最后一天的数据。 该图像显示了我拥有的示例数据库,我必须根据月份最后一个日期(31,30,28)的 TimeCol(列名) 过滤数据,然后在过滤数据后我想执行一些算术对其进行操作

标签: asp.netsql-serverdatabase

解决方案


这很容易,这一步会带你知道当前行的当前月末。然后使用 LINQ -> Where(..) 扩展方法进行过滤。这是示例:

public class Row
{
    public string Id { get; set; } = Guid.NewGuid().ToString();
    public string Data { get; set; }
    public DateTime DateTime { get; set; }
}

List<Row> rows = new List<Row>
{
    new Row
    {
        Data = "Data 1",
        DateTime = new DateTime(2019,1,21,21,10,0)
    },

    new Row
    {
        Data = "Data 2",
        DateTime = new DateTime(2019,1,1,23,0,0)
    },

    new Row
    {
        Data = "Data 3",
        DateTime = new DateTime(2019,2,28,0,0,0)
    },

    new Row
    {
        Data = "Data 4",
        DateTime = new DateTime(2019,3,14,13,15,12)
    },

    new Row
    {
        Data = "Data 5",
        DateTime = new DateTime(2019,07,31,21,10,0)
    },

    new Row
    {
        Data = "Data 6",
        DateTime = new DateTime(2019,06,30,0,0,0)
    }
};

List<Row> filteredRows = rows.Where(row =>
{
    //This functions used to get the last day in a month
    int endOfMonth = DateTime.DaysInMonth(row.DateTime.Year, row.DateTime.Month);
    return (
          row.DateTime.Day == endOfMonth &&
          row.DateTime.Hour == 0 &&
          row.DateTime.Minute == 0 &&
          row.DateTime.Second == 0 &&
          row.DateTime.Millisecond == 0
    );
}).ToList();

filtersRws 变量将包含数据 ->“数据 3”和“数据 6”。

问候,

米尔扎


推荐阅读