如何在join语句中将SQL分组查询转换为Linq查询:

lfapxunr  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(123)

我是新的LINQ和不知道如何写分组查询。我有两个表人员和工资,我有SQL查询:

Select Person.Unit, count(Person.Unit) as QuantityPeron, sum(Salary.Val) as SumSalary 
from Person, Salary 
where Person.Person_id = Salary.Person_id 
group by Person.Unit

我在努力:

var sumarySalary = (
    from c in _context.Person 
    join l in _context.Salary on c.Person_id equals l.Person_id
    group c by c.Unit into to g 
    select new 
    { 
        Units = c.Unit, 
        QuanPer = c.Unit.Count(), 
        TotVal = g.Val.Sum() 
    }).ToList();

但是错误

mf98qq94

mf98qq941#

首先,我应该注意到您的SQL并不好,而且使用的是老式的联接。其次,如果您只是使用模型生成器,那么在一个设计良好的数据库中,您将得到一个根本不需要使用联接的模型。在Linq中,除了您只需使用“点导航”来访问相关数据之外,在特定情况下很少需要联接:

var sumarySalary = (
    from c in _context.Person 
    select new 
    { 
        Units = c.Unit, 
        //QuanPer = c.Unit.Count(), this one is questinable
        TotVal = c.Salaries.Sum(s => s.Val) 
    }).ToList();

你的SQL是可查询的,因为它有计数(人。单位)在它。基于你的数据,你的SQL和这个Linq可能是完全错误的。

相关问题