2017-02-01 3 views
0

Я новичок в SQL, пожалуйста, помогите мне, как преобразовать этот запрос в LinqКак преобразовать SQL-запрос в Linq

Это моя таблица Dept:

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; 
} 
+0

ОК, я редактирую таблицу –

+0

Вы предоставляете разные данные для таблицы и запроса. Dept vs Dept_Emp, Department vs DeprtmentName, Sal vs sal. Таким образом, вы спрашиваете о запросе вписатется убедитесь, что таблица имеет одинаковые имена –

ответ

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 кортежей.
+0

Здесь Wat я Упоминание в качестве возвращаемого типа общественного IEnumerable GetJam() { вара х = от де в db.Dept_Emp группы де по de.DeprtmentName в г выберите новый { DeprtmentName = g.Key, TotalSalary = g.Sum (x => x.Sal) }; return x; } –

+0

Не могли бы вы написать весь код? Он поможет полный 4r me –

+0

@JohnPill какая часть вам непонятна? –

Смежные вопросы