c# - 使用 LINQ to SQL 计算日期时间

标签 c# vb.net linq linq-to-sql

我有两个表 TimeSheet 和 TimeRecord。 TimeRecord 具有 TimeSheet 的外键 TimeSheetId。以下时间日志来自TimeRecord,

时间表示例数据:

TimeSheetId, StudentId

  187 , 10
  196 , 11
  195 , 12

TimeRecord 示例数据:

TimeRecordId  TimeSheetId       TimeIn                 TimeOut

   1             187    8/17/2010 1:06:55 PM    8/17/2010   1:53:49 PM

   2             196    8/17/2010 1:31:28 PM    8/17/2010   4:59:58 PM
   3             187    8/17/2010 1:51:40 PM    8/17/2010   4:59:02 PM
   4             187    8/17/2010 2:13:35 PM    8/17/2010   5:00:08 PM
   5             196    8/17/2010 2:19:44 PM    8/17/2010   5:00:14 PM
   6             196    8/17/2010 2:23:02 PM    8/17/2010   4:46:00 PM
   7             195    8/17/2010 3:04:15 PM    8/17/2010   4:58:34 PM

我想获得每个学生花费的总时间。因此,结果将类似于以下内容:

  10 has 10hr 30mn 5sec 
  11 has 8hr 45mm 23sec
  12 has 2hr 33mn 25sec

非常感谢。

最佳答案

您可以简单地从一个日期中减去另一个日期。这会给你一个 TimeSpan目的。然后您可以使用 ToString TimeSpan 对象的方法来显示您希望使用 standard TimeSpan format strings 花费的时间.你可能看起来像这样:

TimeSpan timeSpent = studentTimeRecord.TimeOut - studentTimeRecortd.TimeIn; 
string displayTime = timeSpent.ToString("[hh]hr [mm]mn [ss]sec");

更新: 我刚刚意识到我没有解决将学生分组和对分组求和的问题。我会听从 Jon 的回答。

关于c# - 使用 LINQ to SQL 计算日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503939/

相关文章:

c# - C# 和 VB 如何处理命名参数之间的差异?

sql - Vb.net - 数组、数据库或 sql

c# - Entity Framework 核心 : The property expression 'xx' is not valid. 表达式应表示属性访问: 't => t.MyProperty'

linq - 何时更喜欢用 SelectMany() 表示的连接而不是 Linq 中用 join 关键字表示的连接

c# - 在 C# 中使用全局变量的最佳实践

c# - 我读错了平衡括号挑战吗?

c# - 是否可以向 C# 或 VB.NET 添加关键字?

c# - 如何将此 T-SQL 转换为 LINQ

c# - 将大文件读入字节数组并将其编码为 ToBase64String

c# - 使用 Entity Framework 动态选择要将数据插入到哪个表