Let us consider you have the following class called Employees
C#
class Employees{ public int EmpId { get; set; } public int DeptId { get; set; } public int Salary { get; set; } }You want to find out the highest salary of an Employee in each Department. Here’s the LINQ query:
C#
List<Employees> emp = new List<Employees>(); // populate emp – demo by devcurry // emp.Add(new Employees() { EmpId = 1, DeptId = 1, Salary = 20000 }); var highest = from e in emp group e by e.DeptId into dptgrp let topsal = dptgrp.Max(x => x.salary) select new { Dept = dptgrp.Key, TopSal = dptgrp.First(y => y.Salary == topsal).EmpId, MaximumSalary = topsal };Here's a quick description. We first get the maximum salary in a department using
let topsal = dptgrp.Max(x => x.salary)
we then use the ‘topsal’ variable to compare it against the salary of an Employee in that department and then select the Empid
TopSal = dptgrp.First(y => y.Salary == topsal).EmpIdThat's it and you will get the Employee with the highest salary in each department. To print the results, just use a loop and print the values - foreach(var a in highest){ }.
No comments:
Post a Comment