Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| product:linq:exaples [15.09.2025 09:33] – ekaterina.menkhuzina | product:linq:exaples [15.09.2025 13:14] (текущий) – ekaterina.menkhuzina | ||
|---|---|---|---|
| Строка 775: | Строка 775: | ||
| ===== Поиск задач в проекте с максимальным отклонением ===== | ===== Поиск задач в проекте с максимальным отклонением ===== | ||
| <code csharp> | <code csharp> | ||
| + | var сегодня = DateTime.Now; | ||
| + | var zadacha = dataContext.Zadacha_2b33fa_List | ||
| + | .Where(p => p.TimeReserve == 0 && p.Status == ProjectStatus.InWork) | ||
| + | .Where(p => p.GetParentHierarchy< | ||
| + | .Select(p => new { | ||
| + | Проект_ID = | ||
| + | Проект_name = p.GetParentHierarchy< | ||
| + | Задача_КП = p.Name, | ||
| + | Задача_КП_ID = p.Id, | ||
| + | УДО = p.BaselinePlanEndDate, | ||
| + | ПДО = p.SystemEndDate, | ||
| + | ФДО = p.ActualEndDate, | ||
| + | p.CalendarId, | ||
| + | .ToList(); | ||
| + | var allzadacha = zadacha | ||
| + | .Select(r => new { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | r.УДО, | ||
| + | r.ПДО, | ||
| + | r.ФДО, | ||
| + | r.CalendarId, | ||
| + | Отклонение_Задач = r.УДО != null ? Math.Round(workCalendars.GetWorkCalendar(r.CalendarId).GetWorktimeDays(r.УДО.Value.Date, | ||
| + | //return allzadacha; | ||
| + | |||
| + | var id = parameters.GetValueOrDefault< | ||
| + | var idproject = id; | ||
| + | var Katalog = parameters.GetValueOrDefault< | ||
| + | var projects = dataContext.Projects | ||
| + | .Where(p => p is IT__proekt_ff08df || p is Proekt_a3e2fb || p is Proekt_stroiteljstva_OKS_f001b5) | ||
| + | .Where(d => (Guid? | ||
| + | .Select(p => new { | ||
| + | p.Id, | ||
| + | p.Name, | ||
| + | |||
| + | УДН = p.BaselinePlanStartDate, | ||
| + | УДО = p.BaselinePlanEndDate, | ||
| + | ПДН = p.SystemStartDate, | ||
| + | ПДО = p.SystemEndDate, | ||
| + | ФДН = p.ActualStartDate, | ||
| + | ФДО = p.ActualEndDate, | ||
| + | p.CalendarId, | ||
| + | // Длительность = DbFunctions.DiffDays(p.SystemStartDate, | ||
| + | ПДО_Задача_на_КП = p.GetChildrenHierarchy< | ||
| + | УДО_Задача_на_КП = p.GetChildrenHierarchy< | ||
| + | |||
| + | Задача_КП = p.GetChildrenHierarchy< | ||
| + | Задача_КП_ID = (Guid? | ||
| + | Процент_вып_проекта = p.PercentComplete, | ||
| + | }) | ||
| + | |||
| + | .ToList() | ||
| + | .Select(r => new{ | ||
| + | | ||
| + | r.Id, | ||
| + | r.Name, | ||
| + | | ||
| + | r.УДН, | ||
| + | r.УДО, | ||
| + | r.ПДН, | ||
| + | r.ПДО, | ||
| + | r.ФДН, | ||
| + | r.ФДО, | ||
| + | r.CalendarId, | ||
| + | // | ||
| + | |||
| + | r.Задача_КП_ID, | ||
| + | r.Задача_КП, | ||
| + | r.ПДО_Задача_на_КП, | ||
| + | r.УДО_Задача_на_КП, | ||
| + | Отклонение_Задача_на_КП = r.Задача_КП_ID != null && r.УДО_Задача_на_КП != null ? Math.Round(workCalendars.GetWorkCalendar(r.CalendarId).GetWorktimeDays(r.УДО_Задача_на_КП.Value.Date, | ||
| + | r.Процент_вып_проекта, | ||
| + | |||
| + | Отклонение_Список_Задач = allzadacha.Where(d => d.Проект_ID == r.Id ).Select (h => h.Задача_КП) , | ||
| + | Отклонение_Задача_на_КП2 = allzadacha.Where(d => d.Проект_ID == r.Id ).Any() ? allzadacha.Where(d => d.Проект_ID == r.Id).OrderByDescending(k => k.Отклонение_Задач).FirstOrDefault().Отклонение_Задач : 0, | ||
| + | Отклонение_Задача_на_КП_max = allzadacha.Where(d => d.Проект_ID == r.Id ).Any() ? allzadacha.Where(d => d.Проект_ID == r.Id ).Max(g => g.Отклонение_Задач) : 0, | ||
| + | }) | ||
| + | .ToList(); | ||
| + | return projects; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Последняя по времени запись в протоколе ===== | ||
| + | <code csharp> | ||
| + | // Пример linq-запроса на событие последнего изменения объекта: | ||
| + | var projectId = parameters.GetValueOrDefault< | ||
| + | var lastEvent = dataContext.Events // получаем события | ||
| + | .Where(p => p.ObjectId == projectId) // фильтруем по id объекта | ||
| + | .OrderByDescending(p => p.Time) // сортировка по полю Time | ||
| + | .Select(p => new | ||
| + | { | ||
| + | Время = p.Time, | ||
| + | UID_пользователя = p.PersonId, | ||
| + | Текст = p.MessageHtml, | ||
| + | ИД_проекта = p.ObjectId, | ||
| + | Данные_события = p.MessageData, | ||
| + | Тип_события = p.Type, | ||
| + | }) | ||
| + | .Take(1) // берем только одну запись | ||
| + | .ToList(); // преобразуем в список | ||
| + | |||
| + | return lastEvent; // Возвращаем список, | ||
| </ | </ | ||