2014-03-06 38 views
1

我收到错误System.Linq.Enumerable的”执行对目前尚未实现

执行数据库服务器端:GroupBy(IEnumerable ` 1,Func ` 2)'在数据库服务器端目前未实现。

当我执行

from t in dbContext.TrackerRecords 
    where t.DeviceSerial.Value.Equals(deviceSerial) && 
    t.Date.Value >= fromDate && t.Date.Value <= toDate 
    orderby t.Date.Value descending 
    group t by t.Date.Value.Date into g 
    select new TripDataModel 
    { 
     Day = g.Key, 
     Trips = (from x in g 
     group x by x.Date.Value.Hour into gj 
     where gj.Max(m => m.Speed.Value) > 0 
     let AvgSpd = gj.Average(m => m.Speed.Value) 
     select new TripModel 
     { 
      MinSpeed = gj.Min(m => m.Speed.Value), 
      MaxSpeed = gj.Max(m => m.Speed.Value), 
      AvgSpeed = AvgSpd > 0 
       ? Math.Round(AvgSpd, 2, MidpointRounding.AwayFromZero) 
       : 0, 
      FromHour = new DateTime(g.Key.Year, g.Key.Month, g.Key.Day, gj.Key, 0, 0) 
     }) 
    } 

我试着在linqtosql和做工精细的查询,但我需要使用Telerik的OpenAccess的以下查询

有没有解决方法或解决方法呢?

+0

你可以在内存中组,而不是在服务器端? –

+0

为什么在内存中分组LinqToSql可以在服务器上分组。为什么openAccess不能? –

+0

错误消息导致我认为linq组由于尚未在OpenAccess中实现。假设它有自己的实现(不使用它后面的LinqToSql),您可以使用LinqToSql的group by而不是OpenAccess。 **但是**,在看了[这个论坛讨论](http://www.telerik.com/forums/is-group-by-supported)之后,我认为group by应该在OpenAccess中实现。最好尝试在论坛中发布问题。 – har07

回答

1

http://www.telerik.com/forums/server-side-currently-not-implemented

第一查询后,将其转换为一个列表,然后运行子查询。

这样的:

from t in dbContext.TrackerRecords.ToList() 

然后,您查询的其余部分。

+0

如果查询确实无法在服务器端执行,那么您不应该使用'ToList'来使用Linq来对它进行评估,您应该使用'AsEnumerable'。 – Servy

+0

如果使用'AsEnumerable',它仍然在数据库上执行? –

+0

在表名后加入toList()也适用于我! –

相关问题