如何将SQL查询转换为LinQ

时间:2017-02-01 12:48:57

标签: sql-server linq

我是SQL新手,请帮助我如何将此查询转换为LinQ

这是我的表部门:

Id   Name    Sal       Department
1    John   40000      Dotnet
2    mick   45000      DotNet
3    Pillay  777       Sql

这里我想显示基于部门名称的薪资,例如:

DepartmentName     ToalSal
Dotnet          85000
Sql             777

select DeprtmentName,sum(sal) from Dept_Emp Group by DeprtmentName

我写了一些查询部分

public IEnumerable<Dept_Emp> GetJam()
{
   var x = from n in db.Dept_Emp
           group n by n.Sal into g
           select new
           {
              DeprtmentName = g.Key
           };
   //  what I mention Here;
}

1 个答案:

答案 0 :(得分:0)

您缺少计算分组实体的sal字段的总和。你也是按错误的字段分组。您应该使用部门名称进行分组

from de in db.Dept_Emp
group de by de.DeprtmentName into g
select new {
   DepartmentName = g.Key,
   TotalSalary = g.Sum(x => x.Sal) // aggregation here
}

您输出的是匿名对象。您无法直接从方法返回它们。你有几个选择

  1. 使用名称和总工资字段创建类似DepartmentTotals的自定义类,并返回此类的实例而不是匿名对象。然后返回类型为IEnumerable<DepartmentTotals>
  2. 创建Tuple<string, int>(或任何类型的薪水)。并返回这样的元组。
  3. 使用C#7元组。