Могу ли я написать случай, когда запрос в ядре Entity Framework и Linq? - PullRequest
3 голосов
/ 10 марта 2020

Мой запрос похож на следующий, (postgresql)

  SELECT split_part(grp.agerange, '*',2) as age_range,
         round(sum(salary)) AS total
  FROM
   (
       SELECT salary,
              CASE
                  WHEN(date_part('year', age(birth_date)) >  0  AND date_part('year', age(birth_date)) <= 8)   THEN  '0 - 8 age'
                  WHEN(date_part('year', age(birth_date)) >  8  AND date_part('year', age(birth_date)) <= 16)   THEN '8 - 16 age'
                  WHEN(date_part('year', age(birth_date)) >  16  AND date_part('year', age(birth_date)) <= 24)   THEN '16 - 24 age'
                  WHEN(date_part('year', age(birth_date)) >  24)  THEN '24 < age'   ELSE 'Unknown'
               END as agerange
       FROM sde.employee
    ) grp
  GROUP BY grp.agerange
  ORDER BY grp.agerange;

Итак, можно ли создать запрос в ядре структуры ядра ядра 3.0 Модель сотрудника с использованием linq?

public class Employee{
   public string Id {get;set;}
   public string Name {get;set;}
   public decimal Salary {get;set;}
   public DateTime? BirthDate {get;set;}
}

И из мой контекст базы данных:

var grouped = _context.Employees.Group(????

Дата рождения имеет тип Nullable.

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете просто использовать условный оператор? Или оператор if в операторе Select, затем группировать по этому результату ....

var grouped = _context.Employees
    .Select(e => new { AgeRange = e.birth_date.Year > 24 ? "24 < age" : etc.});
    .Group(e => e.AgeRange);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...