如何获得相同时间的日期时间?
How to get Datetime of the same hours?
目前我正在做一个项目来分析不同动作的表现。为此,我创建了一个带有 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()
但是您可能需要进行进一步的更改,因为您得到的是多个列表而不是一个...
目前我正在做一个项目来分析不同动作的表现。为此,我创建了一个带有 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()
但是您可能需要进行进一步的更改,因为您得到的是多个列表而不是一个...