Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.10.2015, 14:48   #1
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию LINQ запрос среднего времени

Здравствуйте, у меня общее время в запросе подсчитывает таким образом:
Код:
 var uz = (from line in readText
                         let a = line.Split(',')
                         where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
                         let Num = a[1]
                         let timeAttr = a[4].Split(':')
                         let timeUsage = TimeSpan.FromHours(int.Parse(timeAttr[0])) + TimeSpan.FromMinutes(int.Parse(timeAttr[1])) + TimeSpan.FromSeconds(int.Parse(timeAttr[2]))
                         select new { Num, timeUsage } into Uzel
                         group Uzel by Uzel.Num into g
                      select new { Num = g.Key, TotalTime = new TimeSpan(g.Sum(arg => arg.timeUsage.Ticks)) }
                         
                  );
Как подсчитать среднее время?
Fil_1990 вне форума
Старый 07.10.2015, 14:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var uz = (from line in readText
                         let a = line.Split(',')
                         where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
                         let Num = a[1]
                         let timeAttr = a[4].Split(':')
                         let timeUsage = TimeSpan.FromHours(int.Parse(timeAttr[0])) + TimeSpan.FromMinutes(int.Parse(timeAttr[1])) + TimeSpan.FromSeconds(int.Parse(timeAttr[2]))
                         select new { Num, timeUsage } into Uzel
                         group Uzel by Uzel.Num into g
                      select new { Num = g.Key, TotalTime = new TimeSpan(g.Sum(arg => arg.timeUsage.Ticks)), AverageTime=new TimeSpan(g.Average(arg=>arg.timeUsage.Ticks)) }
                         
                  );
как то так поидее
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 07.10.2015, 15:03   #3
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Пробывал уже так делать ругается:confus ed:
Fil_1990 вне форума
Старый 07.10.2015, 16:05   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как ругается?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 07.10.2015, 16:26   #5
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Вот такие ошибки выдаёт
Изображения
Тип файла: jpg Снимок.JPG (43.2 Кб, 113 просмотров)
Fil_1990 вне форума
Старый 07.10.2015, 16:39   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var uz = (from line in readText
                         let a = line.Split(',')
                         where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
                         let Num = a[1]
                         let timeAttr = a[4].Split(':')
                         let timeUsage = TimeSpan.FromHours(int.Parse(timeAttr[0])) + TimeSpan.FromMinutes(int.Parse(timeAttr[1])) + TimeSpan.FromSeconds(int.Parse(timeAttr[2]))
                         select new { Num, timeUsage } into Uzel
                         group Uzel by Uzel.Num into g
                      select new { Num = g.Key, TotalTime = new TimeSpan(g.Sum(arg => arg.timeUsage.Ticks)), AverageTime=new TimeSpan((long)g.Average(arg=>arg.timeUsage.Ticks)) }
                         
                  );
это можно было и самостоятельно поправить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 07.10.2015, 16:46   #7
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Спасибо, а сортировку вывода в самом запросе можно делать?
Fil_1990 вне форума
Старый 07.10.2015, 17:29   #8
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Почему сортировка не работает?
Код:
var uz = (from line in readText
                         let a = line.Split(',')
                         where a.Length >= 5 && Regex.IsMatch(a[4], @"\d{2}:\d{2}:\d{2}")
                         let Num = a[1]
                         let timeAttr = a[4].Split(':')
                         let timeUsage = TimeSpan.FromHours(int.Parse(timeAttr[0])) + TimeSpan.FromMinutes(int.Parse(timeAttr[1])) + TimeSpan.FromSeconds(int.Parse(timeAttr[2]))
                         select new { Num, timeUsage } into Uzel
                         group Uzel by Uzel.Num into g
                      select new { Num = g.Key, TotalTime = new TimeSpan(g.Sum(arg => arg.timeUsage.Ticks)), AverageTime = new TimeSpan((long)g.Average(arg => arg.timeUsage.Ticks))}

                         
                  );
            var sort = from lin in uz
                       orderby lin.Num
                       select lin;
Код:
 foreach (var z in uz)
            {
                Console.WriteLine("На {0} узле время отклонения равно {1} среднее время {2:hh\\:mm\\:ss}", z.Num, z.TotalTime, z.AverageTime);
                W.WriteLine("На {0} узле время отклонения равно {1} среднее время отклонения на узле {2:hh\\:mm\\:ss} ", z.Num, z.TotalTime, z.AverageTime);
            }

Последний раз редактировалось Fil_1990; 07.10.2015 в 17:36.
Fil_1990 вне форума
Старый 07.10.2015, 17:32   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как провериили что она не сработала?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 07.10.2015, 17:36   #10
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Не знаю вроде написано правильно, не реагирует вообще(
Fil_1990 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
asp.net linq запрос в запросе (как то так) ogamilait C# (си шарп) 6 16.02.2015 20:59
Оценка среднего времени выполнения команды(на просто С) nastya2112 Помощь студентам 0 06.11.2012 11:21
LINQ C# составить запрос Antrikot C# (си шарп) 1 18.02.2012 11:34
Запрос промежутка времени ГОСЕАН БД в Delphi 7 14.06.2011 13:10
Cложный запрос к набору массивов LINQ nec117 C# (си шарп) 1 10.05.2011 19:38