c# - 如何获得相同时间的日期时间?

标签 c# asp.net-mvc database datetime mdf

目前我正在从事一个分析不同 Action 表现的项目。为此,我创建了一个带有 MDF 数据库的 ASP.NET MVC 项目。 我阅读了日志文件(.csv 文件),解析它们并将它们安全地保存到数据库中。 csv 文件如下所示:

我在浏览器的控制台中得到了这个:

Array[6]
0: {durat: 148, err: false, time: "2019-06-03T02:00:06.86"}
1: {durat: 151, err: false, time: "2019-06-03T02:01:06.393"}
2: {durat: 139, err: false, time: "2019-06-03T02:13:06.63"}
3: {durat: 173, err: false, time: "2019-06-03T03:00:06.86"}
4: {durat: 151, err: false, time: "2019-06-03T03:01:06.393"}
5: {durat: 139, err: false, time: "2019-06-03T04:13:06.63"}

我需要做什么才能按小时对输出进行分组?喜欢:

Array[3]
0: {durat: 148, err: false, time: "2019-06-03T02:00:06.86"}
1: {durat: 151, err: false, time: "2019-06-03T02:01:06.393"}
2: {durat: 139, err: false, time: "2019-06-03T02:13:06.63"}

Array[2]

0: {durat: 173, err: false, time: "2019-06-03T03:00:06.86"}
1: {durat: 151, err: false, time: "2019-06-03T03:01:06.393"}

Array[1]

0: {durat: 139, err: false, time: "2019-06-03T04:13:06.63"}

数据库结构:

public partial class ChartData
{
    public int Id { get; set; }
    public DateTime Timestamp { get; set; }
    public string Function { get; set; }
    public int Duration { get; set; }
    public bool IsError { get; set; }
}`

通过这种方法,我可以从数据库中获取所选函数的所有数据:

public List<ChartDataDTO> GetDataForChart(string function)
    {
        return db.ChartDatas
            .Where(x => x.Function == function)
            .Select(x => new ChartDataDTO
            {
                durat = x.Duration,
                err = x.IsError,
                time = x.Timestamp
            })
            .ToList();
    }

在 JS 中我使用这样的方法:

$.getJSON(`/Home/GetDataForChart?function=${selectedFunction}`)

Csv 文件结构:

date,functionName,DurationInMs,3,False

最佳答案

您可以使用 LINQ 轻松完成此操作。只需按日期和小时分组并将列表拆分为多个子列表。这是一个例子:

List<ChartData> allItems = GetDataForChart("somefunctionIguess");

List<List<ChartData>> sublists = new List<List<ChartData>>();

sublists = 
allItems.GroupBy( x => new {
     x.Timestamp.Date,
     x.Timestamp.Hour
})
.Select(x=> x.ToList()).ToList();

或者甚至可能是这样的:

db.ChartDatas
        .Where(x => x.Function == function)
        .Select(x => new ChartDataDTO
        {
            durat = x.Duration,
            err = x.IsError,
            time = x.Timestamp
        })
        .ToList()
    .GroupBy( x => new {
     x.Timestamp.Date,
     x.Timestamp.Hour
})
.Select(x=> x.ToList()).ToList()

但是您可能需要进行进一步的更改,因为您得到的是多个列表而不是一个...

关于c# - 如何获得相同时间的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56982375/

相关文章:

asp.net-mvc - 减小 asp.net mvc Controller 的大小

java - BLOB:无法读取所有数据,但只有几 kb

c# - EF 核心迁移失败 : System. Runtime.Remoting.RemotingException : Cannot load type 'Microsoft. EntityFrameworkCore.Design.IOperationResultHandler

c# - 按另一个字符串列表对字符串列表进行排序

c# - 设置 Excel 电子表格列属性问题

c# - 为什么LinqPad返回 The name 'ModelName' does not exist in the current context 错误?

c# - 为什么我的子窗体没有在任务栏中显示自定义图标?

c# - 这是一个有点笼统的查询,但是 ASP.NET 应用程序如何知道请求是来自一台计算机还是另一台计算机?

php - 基于子查询值的 MySql 查询限制

php - 如何使用php将多行数据插入Mysql DB