У меня есть таблица под названием «Образцы» со следующими столбцами: Id, Type, Quantity, Unit, SampleTime.Как получить среднестатистические данные за месяц
У меня есть следующее заявление, которое вычисляет ежедневный средний вес:
weightchart.data = db.Samples
.Where(n => n.Type == "weight")
.GroupBy(n => DbFunctions.TruncateTime(n.SampleTime))
.Select(item => new ChartData()
{
timestamp = item.Key,
average = item.Average(a => a.Quantity),
max = item.Max(a => a.Quantity),
min = item.Min(a => a.Quantity),
count = item.Count()
}).OrderBy(n => n.timestamp).ToList();
charts.Add(weightchart);
Теперь я хотел бы получить в среднем ежечасно. Я не могу понять, как это сделать. Я новичок в C#, linq и сущности.
Обновление: Я обновил свое заявление к этому:
weightchart.data = db.Samples.Where(n => n.Type == "weight").GroupBy(n => new { Date = n.SampleTime.Date, Hour = n.SampleTime.Hour }).Select(item => new ChartData()
{
timestamp = new DateTime(item.Key.Date.Year, item.Key.Date.Month, item.Key.Date.Day, item.Key.Date.Hour, 0, 0),
average = item.Average(a => a.Quantity),
max = item.Max(a => a.Quantity),
min = item.Min(a => a.Quantity),
count = item.Count()
}).OrderBy(n => n.timestamp).ToList();
charts.Add(weightchart);
Однако я получаю это исключение:
исключения типа 'System.NotSupportedException' произошел в EntityFramework.SqlServer .dll, но не обрабатывается в коде пользователя Дополнительная информация: Указанный член типа 'Дата' не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности. обновление
Вы можете попробовать использовать 'SqlFunctions.DatePart', но я не уверен, что его поддерживают версии EF. – MarcinJuraszek
Можете ли вы дать мне пример кода? У меня есть Google для этого, и многие примеры, которые я не могу использовать, поскольку большинство людей не используют сущности, но Linq to Sql, я считаю. – rukiman
Пожалуйста, разместите свой ответ в качестве ответа, а не редактируйте его. – abatishchev