Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行';系统Linq可枚举:GroupBy(IEnumerable`1,Func`2)和#x27;在数据库服务器端,当前未实现_C#_Linq_Group By_Telerik_Telerik Open Access - Fatal编程技术网

C# 执行';系统Linq可枚举:GroupBy(IEnumerable`1,Func`2)和#x27;在数据库服务器端,当前未实现

C# 执行';系统Linq可枚举:GroupBy(IEnumerable`1,Func`2)和#x27;在数据库服务器端,当前未实现,c#,linq,group-by,telerik,telerik-open-access,C#,Linq,Group By,Telerik,Telerik Open Access,我发现了错误 当前未在数据库服务器端执行“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

我发现了错误

当前未在数据库服务器端执行“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)
         })
   }
来自dbContext.TrackerRecords中的t
其中t.DeviceSerial.Value.Equals(DeviceSerial)&&
t、 Date.Value>=fromDate&&t.Date.Value m.Speed.Value)>0
设AvgSpd=gj.平均值(m=>m.速度值)
选择新的TripModel
{
MinSpeed=gj.Min(m=>m.Speed.Value),
MaxSpeed=gj.Max(m=>m.Speed.Value),
AvgSpeed=AvgSpd>0
?数学舍入(AvgSpd,2,中点舍入。远离零)
: 0,
FromHour=新日期时间(g.Key.Year,g.Key.Month,g.Key.Day,gj.Key,0,0)
})
}
我在linqtosql中尝试了这个查询,结果很好,但我需要使用Telerik OpenAccess

有什么解决方案或解决办法吗?

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

像这样:

from t in dbContext.TrackerRecords.ToList()

然后是查询的其余部分。

您可以在内存中分组,而不是在服务器端吗?为什么要在内存中分组LinqToSql可以在服务器端分组。为什么openAccess不能?错误消息让我想到,在openAccess中还没有实现linq group by。而且,假设它有自己的实现(不使用其背后的LinqToSql),您可以将group by与LinqToSql一起使用,但不能与OpenAccess一起使用。但是,在看过之后,我认为GroupBy应该在OpenAccess中实现。最好试着在那个论坛上发布这个问题。如果查询真的不能在服务器端执行,那么你不应该使用
ToList
来使用Linq to objects来评估它,你应该使用
AsEnumerable
。如果你使用
AsEnumerable
它仍然在数据库上执行吗?