Агрегация sql в запрос Linq

Мне нужно преобразовать этот запрос в linq для сущностей.

SELECT CONVERT(varchar, ValueDateTime, 113) as MINUTE , avg(TagDataValue.TagValue) Value, TagName
FROM TagDataValue
WHERE ValueDateTime >= '6/03/2018' AND ValueDateTime < '6/06/2018' and TagName between ('Poll.Registers Block 0.310-TT-102_(6)') and ('Poll.Registers Block 0.310-TT-102_(7)')
GROUP BY CONVERT(varchar, ValueDateTime, 113) , TagName

Я пробовал пару запросов в linq к таким сущностям ..

var g = (from x in ObjEntities.TagDataValues
                             where x.ValueDateTime >= FromDate && x.ValueDateTime <= EndDate && MachineName.Contains(x.MachineName) && ServerName.Contains(x.ServerName) && Tags.Contains(x.TagName)

                             select new
                             {
                                 TagName = x.TagName,
                                 MachineName = x.MachineName,
                                 ServerName = x.ServerName,
                                 TagValue = x.TagValue,
                                 DtTime = x.ValueDateTime
                             }).ToList().Distinct().GroupBy(t => new
                             {
                                 Date = t.DtTime.AddSeconds(-t.DtTime.Second % 60).AddMinutes(-t.DtTime.Minute % 60), //System.Data.Entity.DbFunctions.AddHours(System.Data.Entity.DbFunctions.AddMinutes(t.DtTime, -t.DtTime.Minute), -t.DtTime.Hour),
                                 TagName = t.TagName.Distinct(),
                             }).Select(u => new
                             {
                                 DateTime = u.Key.Date,
                                 Tagname = u.Key.TagName,
                                 tagvalue = u.Average(cd => cd.TagValue)
                             }).ToList();

но это не дает результата, нет идей, как записать это в linq.

Почему Distinct, реализует ли ваша модель IEquatable, поскольку вы не передаете EqualityComparer, вам лучше вызвать Distinct, используя EqualityComparer после предложения Where

Mrinal Kamboj 06.06.2018 11:39

Я попробовал, но удаление Distinct у меня тоже не сработало .. :(

user7417866 06.06.2018 11:41

Затем после этого будет проблема с группировкой, проверьте, какие значения генерируются, поскольку вы добавляете время (секунды / минуты), как вы ожидаете получить какие-либо данные группировки. Первым остается вопрос, приводит ли Distinct к какому-либо значению, если да, то правильные значения группировки для данных, которые будут сгруппированы.

Mrinal Kamboj 06.06.2018 11:43

Насколько я понимаю, t.DtTime.AddSeconds(-t.DtTime.Second % 60).AddMinutes(-t.DtTime.Minute % 60) не будет соответствовать значению DtTime также является t.TagName коллекцией для вызова Distinct, есть ли у вас IEquatable для типа TagName

Mrinal Kamboj 06.06.2018 11:46

нет, в основном, это то, чего мне нужно достичь, если вы можете помочь, это будет очень полезно. stackoverflow.com/questions/50700293/…

user7417866 06.06.2018 11:47

Это запрос диапазона DateTime, все, что вам нужно, это DateTime.ParseExact с правильным форматом, и он даст ожидаемый результат, я не вижу здесь объема группировки

Mrinal Kamboj 06.06.2018 12:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
42
0

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