6

我正在使用 ADO.Net 将 Excel 文档读入数据集。数据集包含一组员工记录,其中包含作为数据表的登录和注销时间。我需要根据员工 ID 和日期从记录集中获取员工的第一次登录和最后一次注销时间作为最终记录。这是我的示例数据:

    Emp Id  Name            Login             Logout
    12345   RAMACHANDRAN    7/30/2013 8:40  7/30/2013 10:40
    12345   RAMACHANDRAN    7/30/2013 12:30 7/30/2013 14:20
    12345   RAMACHANDRAN    8/01/2013 18:10 8/01/2013 20:20
    12345   RAMACHANDRAN    8/01/2013 20:40 8/01/2013 22:00
    12346   RAVI            8/03/2013 12:30 8/03/2013 14:20
    12346   RAVI            8/03/2013 18:10 8/03/2013 20:20

我需要计算持续时间的最终记录为

 Emp Id    Name          Login           Logout            Duration
 12345   RAMACHANDRAN   7/30/2013 8:40  7/30/2013 14:20    5:40
 12345   RAMACHANDRAN   8/01/2013 18:10 8/01/2013 22:00    3:50
 12346   RAVI           8/03/2013 12:30 8/03/2013 20:20    7:50

这是使用 Linq 查询此数据集的最佳方法吗?哪种方式最好

4

2 回答 2

5

像这样的东西:

dt.GroupBy(l => new {l.EmpId, l.Login.Date},
    (key, g)=> new {
             EmpId = key.EmpId,
             Name = g.First().Name,
             Login = g.Min(d => d.Login),
             Logout = g.Max(d => d.Logout),
             Duration = g.Min(d => d.Login) - g.Max(d => d.Logout)
     });
于 2013-09-12T07:40:53.493 回答
1

试试这个,我必须使用带有列表的 linq,如下所示

 var ListValues = (from fDate in db.tblLog select fDate).Tolist(); 
foreach (var item in ListValues)
        {
            DateTime in = Convert.ToDateTime(inDate );
            DateTime out = Convert.ToDateTime(outDate );
            TimeSpan ts = in - out;
            var duration = ts.TotalHours;
        }
于 2013-09-12T12:48:28.760 回答