C# LINQ到实体以替换到生成表的联接

C# LINQ到实体以替换到生成表的联接,c#,linq-to-entities,C#,Linq To Entities,我有一些SQL,我希望在LINQ中复制到实体。它有一个带有DateTime列的表,以及系统中另一个实体当时的GPS位置。它将此表交叉连接到表值函数的输出,该函数生成特定时间段内的“时间表”。此TVF的代码如下所示: WHILE @dt_start <= @dt_end BEGIN INSERT INTO @res (dt) VALUES (@dt_start) SET @dt_start = dateadd(ms, @interval_ms, @dt

我有一些SQL,我希望在LINQ中复制到实体。它有一个带有DateTime列的表,以及系统中另一个实体当时的GPS位置。它将此表交叉连接到表值函数的输出,该函数生成特定时间段内的“时间表”。此TVF的代码如下所示:

  WHILE @dt_start <= @dt_end
  BEGIN
        INSERT INTO @res (dt) VALUES (@dt_start)
        SET @dt_start = dateadd(ms, @interval_ms, @dt_start)
  END -- WHILE

WHILE@dt_start如果您只想生成从
开始
时间到
结束
时间的日期集,请尝试以下操作

public static IEnumerable<DateTime> Intervals(DateTime start,
        DateTime end, int intervalMs)
{
    int number = (int) ((end - start).TotalMilliseconds / intervalMs);
    return Enumerable.Range(0, number).Select(i =>
        start + TimeSpan.FromMilliseconds(intervalMs * i));
}
公共静态IEnumerable interval(日期时间开始,
日期时间结束,整数间隔)
{
整数=(int)((结束-开始).total毫秒/间隔);
返回可枚举范围(0,数字)。选择(i=>
开始+时间跨度从毫秒(间隔*i));
}
public static IEnumerable<DateTime> Intervals(DateTime start,
        DateTime end, int intervalMs)
{
    int number = (int) ((end - start).TotalMilliseconds / intervalMs);
    return Enumerable.Range(0, number).Select(i =>
        start + TimeSpan.FromMilliseconds(intervalMs * i));
}