【发布时间】:2021-05-31 13:36:39
【问题描述】:
如何将 int 1 和 120 替换为 TimeSpan?
public class StatisticsTask
{
public static double GetMedianTimePerSlide(List<VisitRecord> visits, SlideType slideType)
{
var times = visits
.GroupBy(x => x.UserId)
.SelectMany(x => x.OrderBy(t => t.DateTime).Bigrams().Where(y => y.Item1.SlideType == slideType))
.Select(x => x.Item2.DateTime - x.Item1.DateTime)
.Where(x => x.TotalMinutes >= 1 && x.TotalMinutes <= 120)
.Select(x => x.TotalMinutes)
.ToList();
if (times.Count == 0)
return 0;
return times.Median();
}
}
【问题讨论】:
-
为什么要使用 TimeSpan 而不是 1 和 120?你从某个地方得到 TimeSpan 吗?您究竟想达到什么目的?从技术上讲,您可以使用
x >= new TimeSpan(0, 1, 0) && x <= new TimeSpan(2, 0, 0),但为什么呢? -
我认为可能对
TimeSpan是有误解。 -
但无论如何:
.Where(x => x >= TimeSpan.FromMinutes(1) && x <= TimeSpan.FromMinutes(120))但这真的能改善什么吗? -
你知道你会错过例如30 秒?
-
我假设您认为
TimeSpan是一种描述具有开始和结束的时间范围的类型。事实并非如此,TimeSpan只是描述了持续时间。因此,您不能使用单个TimeSpan来指定 1 分钟到 120 分钟的范围。也许你应该看看this Time Period Library。