LINQ 按多列分组并计数

J86

我的 .NET Core 应用程序中有以下 LINQ 代码。我正在使用带有 Pomelo 的 EF Core 作为 MySQL 的驱动程序。

var journeyId = 5917;
var journey = Journeys.FirstOrDefault(j => j.JourneyId == journeyId);

var journeyEvents = from ad in AccelerometerData
                    join ae in AccelerometerEvents on ad.AccelerometerDataId equals ae
                        .AccelerometerData.AccelerometerDataId
                    where ad.Device.DeviceId == journey.Device.DeviceId && ae.TimeStamp >= journey.StartDateTime &&
                          ae.TimeStamp <= journey.EndDateTime
                    group ae by new
                    {
                        ae.EventType,
                        ae.Level
                    } into g
                    select new
                    {
                        EventType = new JourneyEventType { JourneyEventTypeId = g.Key.EventType },
                        Level = g.Key.Level,
                        Count = g.ToList().Count()
                    };

journey.JourneyEvents = journeyEvents.ToList();

当代码尝试运行最后一行时,我收到以下异常。

无法解析表达式“g.ToList()”:当前不支持方法“System.Linq.Enumerable.ToList”的这种重载。

我错过了什么?

乔治·保利

使用g.Count()代替 g.ToList().Count()。

var journeyEvents = from ad in AccelerometerData
                    join ae in AccelerometerEvents on ad.AccelerometerDataId equals ae
                        .AccelerometerData.AccelerometerDataId
                    where ad.Device.DeviceId == journey.Device.DeviceId && ae.TimeStamp >= journey.StartDateTime &&
                          ae.TimeStamp <= journey.EndDateTime
                    group ae by new
                    {
                        ae.EventType,
                        ae.Level
                    } into g
                    select new
                    {
                        EventType = new JourneyEventType { JourneyEventTypeId = g.Key.EventType },
                        Level = g.Key.Level,
                        Count = g.Count()
                    };

journey.JourneyEvents = journeyEvents.ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章