Примеры LINQ-запросов
Сумма по справочникам выбранных объектов
var deals = dataContext.Kontragent_9e5de8_List
.Where(z => z.Name.Contains("Фрагмент"))
.Select(z => new {z.Name, Trudochasy = z.GetChildrenHierarchy<Uchet_vremeni_3156dc>().Sum(r => r.Chasi), Dengi = z.GetChildrenHierarchy<Oplata_45b34c>().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<Otchet_o_statuse_zadachi_3c7214>().Any())
.OrderByDescending(z => z.SystemEndDate)
.Select(z => new
{
z.Name,
z.PlannedEndDate, //Плановая ДО (ограничение)
z.SystemEndDate, //Расчетная ДО (из планировщика)
Otchet_o_statuse = z.GetChildrenHierarchy<Otchet_o_statuse_zadachi_3c7214>()
.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<Guid>("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<Kontragent_9e5de8>().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;