Entity Framework - Как получить стандартное отклонение с помощью GroupBy?

Я использую Entity Framework 5, код сначала свободный API. Я построил простой запрос с GroupBy для агрегации:

                        var query = context.Table1
                                    .GroupBy(g => new
                                    {
                                        Prop1= g.Prop1,
                                        Prop2 = g.Prop2
                                    })
                                    .Select(s => new
                                    {
                                        Prop1= s.Key.Prop1,
                                        Prop2= s.Key.Prop2,
                                        Avg = s.Average(m => m.Minutes),
                                        Min = s.Min(m => m.Minutes),
                                        Max = s.Max(m => m.Minutes),
                                        StdDev = //How to get standard deviation of Minutes here?
                                    })
                                    .ToList();

Наряду с другими агрегациями (среднее, минимальное, максимальное), как я могу получить стандартное отклонение минут в моем выборе? Я слышал, что для StdDev есть каноническая функция, но не смог понять, как ее применить в этом случае. Любая помощь или толчок в правильном направлении будет принята с благодарностью!

1 ответ

Решение

Вы должны быть в состоянии использовать EntityFunctions.StandardDeviation в System.Data.Objects как это:

StdDev = EntityFunctions.StandardDeviation(s.Select(m => m.Minutes))

(Если бы вы использовали EF 6, это было бы System.Data.Entity.DbFunctions.StandardDeviation())

Другие вопросы по тегам