Сегодня 11 мая, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
coding4.net
coding4.net
Голосов: 1
Адрес блога: http://www.coding4.net/
Добавлен: 2012-06-11 20:16:46
 

Как найти наибольшее значение в каждой группе с использованием LINQ ?

2012-07-10 18:22:00 (читать в оригинале)


В этом посте, я покажу как вытащить максимальные значения в каждой группе используя LINQ.
Вначале рассмотрим класс Employees.

C#

class Employees
{
public int EmpId { get; set; }
public int DeptId { get; set; }
public int Salary { get; set; }
}

Допустим вам нужно найти наибольшую зарплату сотрудника в каждом отделе. Дальше идет соответствующий LINQ запрос:

C#

List<Employees> emp = new List<Employees>();
// populate emp
// 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
};

Здесь небольшое пояснение. Сначала мы получаем максимальную зарплату используя

let topsal = dptgrp.Max(x => x.salary)

потом мы используем переменную topsal для сравнения ее с зарплатой текущего Employee в отделе и потом выбираем Empid

TopSal = dptgrp.First(y => y.Salary == topsal).EmpId

Вот и все что нужно, чтобы получить иды сотрудников с самой большой зарплатой в каждом департаменте. Для печати результатов, просто используйте цикл и напечатайте значения - foreach(var a in highest){ }.

Это перевод. Оригинал здесь.

Тэги: (решение), linq, object, сделать

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»
Изменения рейтинга
Категория «Блогосфера»
Взлеты Топ 5
+1241
1261
Robin_Bad
+1175
1263
Futurolog
+1090
1094
MySQL Performance Blog
+1028
1098
Ksanexx
+1023
1097
Refinado
Падения Топ 5


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.