private IQueryable <SensorDataGrouped> GroupSensorDataQuery(IQueryable <SensorDataView> data, GroupByTime groupByTime)
        {
            IQueryable <SensorDataGrouped> grouped = null;

            switch (groupByTime)
            {
            case GroupByTime.Minute:
                grouped = data.GroupBy(
                    x => new { x.SensorId, x.date, x.hour, x.minute },
                    (group, groupedData) =>
                    new SensorDataGrouped
                {
                    Date         = group.date,
                    Hour         = group.hour,
                    Minute       = group.minute,
                    AverageValue = groupedData.Average(x => x.Value),
                    SensorId     = group.SensorId,
                });
                break;

            case GroupByTime.Hour:
                grouped = data.GroupBy(
                    x => new { x.SensorId, x.date, x.hour },
                    (group, groupedData) =>
                    new SensorDataGrouped
                {
                    Date         = group.date,
                    Hour         = group.hour,
                    AverageValue = groupedData.Average(x => x.Value),
                    SensorId     = group.SensorId,
                });
                break;

            case GroupByTime.Daily:
                grouped = data.GroupBy(x =>
                                       new { x.SensorId, x.date },
                                       (group, groupedData) =>
                                       new SensorDataGrouped
                {
                    Date         = group.date,
                    AverageValue = groupedData.Average(x => x.Value),
                    SensorId     = group.SensorId,
                });
                break;

            case GroupByTime.Week:
                grouped = data.GroupBy(x =>
                                       new { x.SensorId, x.year, x.week },
                                       (group, groupedData) =>
                                       new SensorDataGrouped
                {
                    Year         = group.year,
                    Week         = group.week,
                    AverageValue = groupedData.Average(x => x.Value),
                    SensorId     = group.SensorId,
                });
                break;

            case GroupByTime.Month:
                grouped = data.GroupBy(x =>
                                       new { x.SensorId, x.year, x.month },
                                       (group, groupedData) =>
                                       new SensorDataGrouped
                {
                    Year         = group.year,
                    Month        = group.month,
                    AverageValue = groupedData.Average(x => x.Value),
                    SensorId     = group.SensorId,
                });
                break;

            default:
                break;
            }

            return(grouped);
        }
示例#2
0
        private SensorDataViewModel GetSensorData(string userName, DateTime fromDate, DateTime toDate, FilterByTime filter, GroupByTime group)
        {
            var request = new GetGroupedSensorDataRequest
            {
                UserName     = userName,
                FromDate     = fromDate,
                ToDate       = toDate,
                GroupByTime  = group,
                FilterByTime = filter
            };

            var data  = dataReposytory.GetData(request);
            var model = ChartHelper.GetDataSets(data);

            return(model);
        }