C# 计算每个用户';ASP.NET C中的总登录周期#

C# 计算每个用户';ASP.NET C中的总登录周期#,c#,asp.net,database,login,logout,C#,Asp.net,Database,Login,Logout,我在网络表单中计算每个用户的总持续时间。我已经在数据库中存储了用户的登录和注销时间。但是有人对如何计算有想法吗?我使用的是ASP.NET C#您所要做的就是从每个记录的开始时间中扣除结束时间,然后将结果相加。我将让您了解如何从数据库中获取数据,因为它根据您的设置而变化很大 假设您正在将数据库读入一个类中,该类包含用于登录和注销的日期时间。假设您已经将它们读入内存,现在我们有了一个相关登录周期的列表 var totalTime = new TimeSpan(loginPeriods.Select(

我在网络表单中计算每个用户的总持续时间。我已经在数据库中存储了用户的登录和注销时间。但是有人对如何计算有想法吗?我使用的是ASP.NET C#

您所要做的就是从每个记录的开始时间中扣除结束时间,然后将结果相加。我将让您了解如何从数据库中获取数据,因为它根据您的设置而变化很大

假设您正在将数据库读入一个类中,该类包含用于登录和注销的日期时间。假设您已经将它们读入内存,现在我们有了一个相关登录周期的列表

var totalTime = new TimeSpan(loginPeriods.Select(x => x.Logout - x.Login).Sum(x => x.Ticks));
我们在这里所做的是查找注销和登录之间的时间量。然后创建一个新的TimeSpan对象,该对象等于该时间量。我们这样做是因为TimeSpan有一个有用的属性TotalHours

最后,您使用的是ASP.NET,因此我们需要在某个时候将其转换为文本,以便将其打印到页面上

string.Format("{0:n0}", totalTime.TotalHours);//Returns something like 1,201
编辑:做我自己,我不能放过这件事。我为.Net中缺少IEnumerable.Sum()而烦恼。所以我很快就做出了自己的决定

public static TimeSpan Sum(this IEnumerable<TimeSpan> timespans) =>
        new TimeSpan(timespans.Sum(x => x.Ticks));

你所要做的就是从每个记录的开始时间中扣除结束时间,然后将结果相加。我将让您了解如何从数据库中获取数据,因为它根据您的设置而变化很大

假设您正在将数据库读入一个类中,该类包含用于登录和注销的日期时间。假设您已经将它们读入内存,现在我们有了一个相关登录周期的列表

var totalTime = new TimeSpan(loginPeriods.Select(x => x.Logout - x.Login).Sum(x => x.Ticks));
我们在这里所做的是查找注销和登录之间的时间量。然后创建一个新的TimeSpan对象,该对象等于该时间量。我们这样做是因为TimeSpan有一个有用的属性TotalHours

最后,您使用的是ASP.NET,因此我们需要在某个时候将其转换为文本,以便将其打印到页面上

string.Format("{0:n0}", totalTime.TotalHours);//Returns something like 1,201
编辑:做我自己,我不能放过这件事。我为.Net中缺少IEnumerable.Sum()而烦恼。所以我很快就做出了自己的决定

public static TimeSpan Sum(this IEnumerable<TimeSpan> timespans) =>
        new TimeSpan(timespans.Sum(x => x.Ticks));

对您的数据库运行查询?在C#中从finishOr减去start,Timespan Timespan=logoutTime-loginTime;您希望返回什么类型的持续时间?一分钟、一小时或一天?我注意到你的帐户没有接受你问题的任何答案。请您在这里接受我的回答,并根据您的其他问题接受其他适当的答案?对您的数据库运行查询?在C#中从finishOr中减去开始,Timespan Timespan=logoutTime-loginTime;您希望返回什么类型的持续时间?一分钟、一小时或一天?我注意到你的帐户没有接受你问题的任何答案。请您接受我的回答,并根据您的其他问题接受其他适当的回答,好吗?