-4

linq を使用して同じものを実装する必要がある以下の SQL クエリがありますが、同じものに対して linq ステートメントを作成できません。助けてください。

Declare @DateTime datetime 
set @DateTime = '06/20/2012';-- To get the yesterday/any day attendance record.
With Cte
as
(
    Select EmployeeiD,(convert(varchar,(DATEDIFF(MINUTE,Min(DateAndTime),Max(DateAndTime))/60)) + ':' 
      + convert(varchar,(DATEDIFF(MINUTE,Min(DateAndTime),Max(DateAndTime))/60)))WorkedHoursAndMinutes,
    Min(DateAndTime) As DateAndTime from EmployeeAttendance group by
    EmployeeiD,convert(varchar,DateAndTime,101),convert(varchar,DateAndTime,101) having (
    (DATEDIFF(MINUTE,Min(DateAndTime),Max(DateAndTime))/60) >= 12
        or (DATEDIFF(MINUTE,Min(DateAndTime),Max(DateAndTime))) = 0 )
)
select * from Cte
where convert(varchar,Cte.DateAndTime,103) = 
           (select convert(varchar,@DateTime,103));
4

1 に答える 1

1

何かを達成しようとした方法を示すだけなので、を望んでいるのかを正確に推測するのはちょっと難しいです。しかし、私はこれだと思います:

employeeAttendances.Where(e => e.DateAndTime >= d1 && e.DateAndTime < d2)
.GroupBy (e => e.EmployeeiD)
.Select (g => new 
{ 
    g.Key, 
    Diff = EntityFunctions.DiffHours(g.Min(x => x.DateAndTime),
                                     g.Max(x => x.DateAndTime)) 
} )
.Where(a => a.Diff > 12 || a.Diff == 0)

各 について、特定の 1 日の最小時間と最大時間の差を計算しますEmployeeID

于 2012-08-18T14:53:48.587 に答える