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