2010-12-06 4 views
1

두 개의 datetimes 사이에 예약을 잡으려고합니다.사이/Timerange LINQ

있다 :

시작 (날짜 시간) 및 시간 (기간, 시간 범위를) .. 내가 봤 및 LINQ는 T-SQL에 아주 번역하지 않습니다 이러한 문제를했기 때문에 여러 다른 사람을 발견했습니다

잘 ..

내 LINQ 쿼리 및 번역 된 T-SQL이다는 : http://pastebin.com/sLrpWLma

나는 누군가가 여기서 일해야 할 몇 가지 확장 방법을 만든 것을 본 적이 있지만 나는이 방법을 넣어 어디 확실하지 않다 어떤 수정 rs를 사용하여 내 쿼리에서 사용할 수 있습니까? LINQ Between Operator

답변

0

여기의 IMO 부분은 스키마입니다. 체계는 항상 시작과 끝을 명시하지 않는 경우에 고투 할 것이다; 쿼리 작성이 어려울뿐만 아니라 행당 계산을 수행해야합니다.

나는 지속 계산 된 열이 예를 들어, 테이블 수준에서 해결하는 것입니다 : 이제

create table Booking (
    Start datetime, 
    DurationMinutes int, 
    [End] AS (DATEADD(minute,(DurationMinutes),Start)) PERSISTED 
) 

방금 ​​조회 할 수 있습니다

where b.Start >= someTime and b.End < someTime 

(예를 들어) - 아주지도한다 깔끔하게 TSQL.

계산 된 열이므로 일치하지 않는 End 값을 가질 수 없습니다. 그리고 PERSISTED으로 표시되어 있기 때문에 행 당 계산을 수행 할 필요가 없습니다 (사용자가 SET 옵션을 엉망으로하지 않는 한 ...). 원하는 경우 PERSISTED 열의 색인을 생성 할 수도 있습니다.