【发布时间】:2017-09-19 21:57:59
【问题描述】:
给定以下课程:
public class SessionData
{
public Guid Session { get; set; }
public DateTime Date { get; set; }
}
并列出清单:
public static List<SessionData> GetSessionData()
{
Guid guid1 = Guid.NewGuid();
Guid guid2 = Guid.NewGuid();
List<SessionData> sessionData = new List<SessionData>
{
new SessionData {Session = guid1, Date = DateTime.UtcNow.AddMinutes(3)},
new SessionData {Session = guid1, Date = DateTime.UtcNow.AddMinutes(2)},
new SessionData {Session = guid2, Date = DateTime.UtcNow.AddMinutes(5)},
new SessionData {Session = guid2, Date = DateTime.UtcNow.AddMinutes(4)},
new SessionData {Session = guid1, Date = DateTime.UtcNow.AddMinutes(20)},
new SessionData {Session = guid1, Date = DateTime.UtcNow.AddMinutes(25)},
new SessionData {Session = guid2, Date = DateTime.UtcNow.AddMinutes(20)},
new SessionData {Session = guid1, Date = DateTime.UtcNow.AddMinutes(1)},
};
return sessionData;
}
我想找到会话的平均持续时间 (1) 和最长的会话 (2)。还有每天(3),每周(4),每月(5),每年(6),总共(7)有多少次?
我试图从
var list = (from t in sessionData group t.Date by t.Session).ToList();
并尝试找到每个会话的持续时间(最大日期 - 最小日期)并从那里继续。有没有更好的方法可以直接使用 Linq 进行这些计算?
【问题讨论】:
-
“平均会话持续时间”是什么意思?就像数字一样,您拥有什么以及您期望得到什么?
-
会话持续时间如何确定?你需要一个开始和结束时间
-
@Nkosi 我问了同样的问题,但我的猜测是每个会话都有一个起点,结束是列表中的下一个会话开始时,但列表没有排序...还
-
实际上会话 guid 确定“会话”。从那里开始,我将不得不在每个会话 guid 之后进行扩展,并计算第一个日期和最后一个日期之间的差异(当然是在订购之后),以找到该特定“会话”的持续时间。基本上,这是多租户聊天机器人编排平台的密集日志记录的过度简化的数据量,我们希望对管理人员的仪表板有更好的了解。
-
您有性能问题吗?还是只是如何做的问题?