In this post, I will show you how to fetch the maximum value in each Group using LINQ
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).EmpId
That'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){ }.
Giving me +1 tells me you liked this article! Thanks in advance
Did you like this post?
|
|
|
||
|
|
|
|
Save on Delicious |
|
|
subscribe via rss |
|
subscribe via e-mail |
|
|
print this post |
|
follow me on twitter |




comments
1 Response to "Highest Value in each Group using LINQ"If 2 employees have the same highest salary how would you show both employees?
How can we change the query to return all employee id (maybe comma separated) rather than just first employee id?
Post a Comment