LINQ to Entities에서 복제하려고하는 일부 SQL이 있습니다. 시스템의 다른 엔티티에 대한 DateTime 열과 GPS 위치가있는 테이블이 있습니다. CROSS는 특정 기간 동안 "시간 테이블"을 생성하는 테이블 값 함수의 출력에이 테이블을 조인합니다. 그래서 다음이 교차을 dt_end하는 dt_start에서 생성 된 시간의 각각의 개체에 대한 GPS 위치의 목록을 제공에 가입 된 결과에서생성 된 테이블에 조인을 바꿀 엔티티에 대한 LINQ
WHILE @dt_start <= @dt_end
BEGIN
INSERT INTO @res (dt) VALUES (@dt_start)
SET @dt_start = dateadd(ms, @interval_ms, @dt_start)
END -- WHILE
이 TVF의 코드가 같이 보입니다.
는이 기능의 일부를 복제 할 수있는 간단한 테스트에서 내 나이브 시도는 다음과 같이 보입니다 :
var times = new List<DateTime> {DateTime.Parse("2009-04-04"),
DateTime.Parse("2009-04-05")}.AsQueryable();
var query = from gps in Db.GPSDataPointSet
from t in times
where gps.Driver.Id == 1 && gps.UtcTime <= t
group gps by gps.Driver.Id
into ggps
select ggps.OrderByDescending(gps => gps.Id);
var test = query.ToList();
을하지만 분명이 작동하지 않습니다 - 나는 당신에게 막연한 아이디어를 줄 수있는 희망에 포함 여기서 내가 성취하려고 노력하는 것의 아무도 LINQ to Entities 쿼리의 TVF 기능을 너무 비효율적으로 복제 할 수있는 방법에 대한 제안을 갖고 있습니까?
왜 작동하지 않습니까? – Timwi