6

ADO.Net を使用して Excel ドキュメントをデータセットに読み込んでいます。Dataset ログインおよびログアウト時間を Datatable として含む従業員レコードのセットが含まれます。従業員 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 に答える