Способы улучшить производительность LINQ - PullRequest
0 голосов
/ 08 октября 2019

Вопрос: Показать имена всех сотрудников и полученную зарплату, если только сотрудники, работающие над проектом «ProductX», получают повышение на 10%.

Это отлично работает:

var data_18 = db.employees.Select(e1 => new
    {
        e1.FNAME,
        e1.SSN,
        SALARY = db.works_on.Where(w => w.ESSN == e1.SSN)
                            .Join(db.projects.Where(p => p.PNAME == "ProductX"), w => w.PNO, p => p.PNUMBER, (w, p) => 1).Count() == 0 ? e1.SALARY : e1.SALARY * 1.1
    }).ToList();

Для этого нужна группировка, которую я еще не смог создать.

var data_18_1 = db.employees
    .Join(db.works_on, e1 => e1.SSN, wo => wo.ESSN, (e1, wo) => new
    {   
        e1,
        wo
    }).Join(db.projects, x => x.wo.PNO, p => p.PNUMBER, (g, p) => new
    {
        g.e1.FNAME,
        g.e1.LNAME,
        SALARY = (p.PNAME == "ProductX" ? g.e1.SALARY * 1.1 : g.e1.SALARY)
    }).ToList();

Мне нужна помощь в создании 2-й группы 1или исправьте верхний 1, чтобы он лучше выполнял запрос на выборку на стороне sql, поскольку текущий 1 дает 1, что далеко не хорошо.

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...