====== Примеры LINQ-запросов ====== ===== Сумма по справочникам выбранных объектов ===== var deals = dataContext.Kontragent_9e5de8_List .Where(z => z.Name.Contains("Фрагмент")) .Select(z => new {z.Name, Trudochasy = z.GetChildrenHierarchy().Sum(r => r.Chasi), Dengi = z.GetChildrenHierarchy().Sum(r => r.Summa)}) .OrderBy(z=> z.Name); return deals; =====Просроченные задачи пользователей===== var dToday = DateTime.Today; var tasks = dataContext.Zadacha_c88ec2_List .Where(z => z.SystemEndDate < dToday && (z.Status == ProjectStatus.InWork || z.Status == ProjectStatus.NotStarted) ) .OrderBy(z => z.Responsible.FirstName).ThenBy(z => z.Responsible.LastName).ThenBy(z => z.Name) .Select(z => new { z.Name, user_id = z.Responsible.Id, Ispolnitel = String.Concat(z.Responsible.FirstName, " ", z.Responsible.LastName), z.Responsible.Email, z.SystemStartDate, z.SystemEndDate } ); return tasks; ===== Задачи за 3 дня до начала (Задать дату начала) ===== var dStart = new DateTime(2019, 5, 1); var dEnd = dStart.AddDays(4); var deals = dataContext.SMART__zadacha_45a3a0_List .Where(z => z.PlannedStartDate >= dStart && z.PlannedStartDate < dEnd ) .OrderBy(z => z.Name) .Select(z => new { z.Name, boss = String.Concat(z.Owner.LastName, " ", z.Owner.FirstName), responsible = String.Concat(z.Responsible.LastName, " ", z.Responsible.FirstName), Creator = String.Concat(z.Creator.LastName, " ", z.Creator.FirstName), Status = (z.Status == ProjectStatus.InWork ? "В работе" : (z.Status == ProjectStatus.Complete ? "Выполнен" : (z.Status == ProjectStatus.Cancelled ? "Отменен" : (z.Status == ProjectStatus.Freeze ? "Отложен" : (z.Status == ProjectStatus.NotStarted ? "Не начат" : "Готов к проверке" ) ) ) ) ), z.PlannedStartDate, z.SystemStartDate, z.ActualEndDate, dStart, dEnd}); return deals; ===== Задача с датой окончания и статус отчёта по задаче ===== var tasks = dataContext.Zadacha_c88ec2_List .Where(z => z.GetChildrenHierarchy().Any()) .OrderByDescending(z => z.SystemEndDate) .Select(z => new { z.Name, z.PlannedEndDate, //Плановая ДО (ограничение) z.SystemEndDate, //Расчетная ДО (из планировщика) Otchet_o_statuse = z.GetChildrenHierarchy() .OrderByDescending(r => r.Date) .FirstOrDefault() .Status_056648.Name }); return tasks; ===== Контрагенты, у которых есть не закончившиеся инсталляции (через связи)===== var dStart = DateTime.Now; var Kontragents = dataContext.Kontragent_9e5de8_List .Where(z => z.Installyaciya_180ce0.Where(p => p.Data_okonchaniya_licenzii >= dStart).Any() ) .OrderBy(z => z.Name) .Select(z => new { z.Name, z.Id, RespobsibleId = z.Responsible.Id, z.Installyaciya_180ce0.FirstOrDefault().Data_okonchaniya_licenzii, Nazvanie_inst = z.Installyaciya_180ce0.FirstOrDefault().Name, Chislo = z.Installyaciya_180ce0.Count() }); return Kontragents; ===== Прошлогодние задачи конкретного пользователя===== var personId = parameters.GetValueOrDefault("PersonId", new Guid("50330e78-01c7-4280-9c74-2be072991628")); var previousYear = DateTime.Now.AddYears(-1).Year; var tasks = dataContext.Zadacha_razrabotki_6ad838_List .Where(z => z.Celj_Opisanie != null && z.PlannedStartDate.Value.Year == previousYear && z.Responsible.Id == personId) .OrderByDescending(z => z.PlannedStartDate) .Select(z => new { z.Name, z.SystemStartDate, z.SystemEndDate, z.Celj_Opisanie, z.Trudoyomkostj }); return tasks; ===== Сделки созданные за апрель 2019 ===== var deals = dataContext.Sdelka_3f169d_List .Where(z => z.CreationDate >= new DateTime(2019, 4, 1) && z.CreationDate < new DateTime(2019, 5, 1) ) .OrderBy(z => z.Name) .Select(z => new { Sdelka = z.Name, KontragentName = z.GetParentHierarchy().FirstOrDefault().Name, boss = String.Concat(z.Owner.LastName, " ", z.Owner.FirstName), responsible = String.Concat(z.Responsible.LastName, " ", z.Responsible.FirstName), Creator = String.Concat(z.Creator.LastName, " ", z.Creator.FirstName), Status = (z.Status == ProjectStatus.InWork ? "В работе" : (z.Status == ProjectStatus.Complete ? "Выполнен" : (z.Status == ProjectStatus.Cancelled ? "Отменен" : (z.Status == ProjectStatus.Freeze ? "Отложен" : (z.Status == ProjectStatus.NotStarted ? "Не начат" : "Готов к проверке" ) ) ) ) ), Prichina_otkaza = z.Prichini_otkaza_5ad9a4.Name, z.SystemEndDate, z.SystemStartDate, z.ActualEndDate, delegirovano_menedjeru = ((DateTime?) z.Data_delegirovaniya_sotrudniku).HasValue ? 1 : 0 , Sdelka_length = DbFunctions.DiffDays(z.SystemStartDate, z.SystemEndDate) }); return deals;