改善LINQ性能的方法

时间:2019-10-08 08:22:00

标签: c# entity-framework linq

问题是:如果只给在“ 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给出的结果差强人意。

感谢帮助。

0 个答案:

没有答案