2016-04-01 8 views
0

のデータの違いは、私は、データベースから取得し、私のデータセットです。C#の:GROUPBY、続いてデータセット

Id -- Date -- ClockIn -- ClockOut 

1 -- 1/1/2016 -- 1/1/2016:09:00:00 -- 1/1/2016:17:03:00 

1 -- 1/2/2016 -- 1/1/2016:09:00:00 -- 1/1/2016:11:30:00 

1 -- 1/2/2016 -- 1/1/2016:13:00:00 -- 1/1/2016:15:03:00 

期待される結果

1 -- 1/1/2016(8 hrs) -- 09:00:00 -- 17:03:00 
1 -- 1/2/2016(4 hrs) -- 09:00:00 -- 11:30:00 
        -- 13:00:00 -- 15:03:00 

質問:私はグループごとにしたいです日付フィールドとclockIn/outとの差とその日の合計

私は何をしようとしているのですが、それを動作させることのできないコードです:

var resultSet = from newSet in Dtinfo.AsEnumerable() 
    group newSet by new 
    { 
     uid = newSet.Field<int>("UID"), 
     gDate = newSet.Field<DateTime>("wDate"), 
     inTime = newSet.Field<DateTime>("punchIn"), 
     outTime = newSet.Field<DateTime>("punchOut"), 

     location = newSet.Field<String>("locName"), 
     typeName = newSet.Field<String>("typeName"), 

    } into counter 
    select new 
    { 
     UID = counter.Key.uid, 
     wDate=counter.Key.gDate, 
     punchIn = counter.Key.inTime, 
     punchOut = counter.Key.outTime, 
     locName= counter.Key.location, 
     typeName= counter.Key.typeName, 
     diff = (counter.Key.outTime - counter.Key.InTime).TotalHours, 

    }; 

私は違いを得ていますが、私はグループを必要としています。

パス上の任意のライトが役立ちます。

答えて

1

ここはクエリです。

  • TotalHoursによってグループ化された日付 - - 私は

    • Dateで匿名クラスを返していますすべてのエントリの合計を
    • Entriesその日のために - エントリを、別の匿名クラス

    をそれはあります名前付きクラスに置き換えるほうがよいでしょう。

    var res = from newset in Dtinfo.AsEnumerable() 
           group newset by newset.Field<DateTime>("wDate") 
            into counter 
            select new 
            { 
             Date = counter.Key, 
             TotalHours = counter.Select(a => a.Field<DateTime>("punchOut") - a.Field<DateTime>("punchIn")).Sum(a => a.TotalHours), 
             Entries = counter.Select(a => new 
             { 
              uid = a.Field<int>("UID"), 
              gDate = a.Field<DateTime>("wDate"), 
              /*other fields here 
              * 
              * 
              */ 
             }) 
            }; 
    
  • 関連する問題