【问题标题】:How to convert SQL Query into LinQ如何将 SQL 查询转换为 LinQ
【发布时间】:2017-02-01 12:48:57
【问题描述】:

我是 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;
}

【问题讨论】:

  • 好的,我正在编辑我的表格
  • 您正在为表和查询提供不同的数据。 Dept 与 Dept_Emp、Department 与 DeprtmentName、Sal 与 Sal。因此,您在询问查询,请确保表具有相同的名称

标签: sql-server linq


【解决方案1】:

您缺少计算分组实体的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&lt;DepartmentTotals&gt;
  2. 创建Tuple&lt;string, int&gt;(或任何类型的薪水)。并返回这样的元组。
  3. 使用 C# 7 元组。

【讨论】:

  • 这里我提到作为返回类型 public IEnumerable GetJam() { var x= from de in db.Dept_Emp group de by de.DeprtmentName into g select new { DeprtmentName = g.Key, TotalSalary = g.Sum(x => x.Sal) };返回 x; }
  • 你能写下所有的代码吗?它会帮助我完成 4r
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多