ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: peerAt
10. июля 2012 18:22

В этом посте, я покажу как вытащить максимальные значения в каждой группе используя 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 ?
Сегодня в форумах всплыл еще один хороший способ использования LINQ. Некто спросил как выковырять уникальные значения из последовательности текстов. И еще раз я сказал LINQ-ом ! Мы можем использовать метод Distinct() для того олько уникальные значения. Дальше идет пример кода делающего это: C#var unique = "Apples, Oranges, Apples, Melons" .Split(new string[]...

Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Как найти сумму многомерного массива, используя LINQ ?
Здесь написано как найти сумму значений многомерного массива с использованием LINQ. В примере массив имеет 3 строки и 2 колонки: C# using System;using System.Linq;class Program{static void Main(string[] args){ try { var myArray = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; var arrSum = ...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий