Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2015, 06:48   #1
Joose
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 67
По умолчанию Сортировка объектов по значению, возвращаемому функцией с помощью LINQ

Всем привет, возникла проблема следующего рода. Есть класс, в котором определен метод, возвращающий определенное значение, и есть массив объектов этого класса, которые нужно отсортировать по увеличению значения, возвращаемого этим методом. Использовать OrderBy в данном случае не получилось:

Код:
public static class EmployeesCounter
    {
        public static int ID = 0;
    }

    abstract class Employee
    {
        public int ID;
        public string Name;
        public abstract double GetSalary();
    }

    class FixedEmployee : Employee
    {
        private double Salary;

        public FixedEmployee(string name, double salary)
        {
            ID = EmployeesCounter.ID++;
            Name = name;
            Salary = salary;
        }

        public override double GetSalary()
        {
            return Salary;
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            FixedEmployee[] list = new FixedEmployee[] {new FixedEmployee("Mike", 3400), new FixedEmployee("John", 3500),
            new FixedEmployee("Alex", 4000), new FixedEmployee("Max", 5000)};
            var sortedList = list.OrderBy(empl => empl.GetSalary); //Ошибка
        }
    }
Можно ли используя средства LINQ выполнить сортировку, и если да, то как? Поле Salary использовать нельзя, т.к. в дальнейшем в массиве будут хранится объекты производных от Employee классов, в которых нет такого поля

Последний раз редактировалось Joose; 01.05.2015 в 07:41. Причина: Забыл кое-что
Joose вне форума Ответить с цитированием
Старый 01.05.2015, 08:50   #2
shturman1387
Форумчанин
 
Аватар для shturman1387
 
Регистрация: 12.06.2012
Сообщений: 110
По умолчанию

Ну так конечно ошибка будет. GetSalary - это метод, а не свойство.
Код:
 var sortedList = list.OrderBy(empl => empl.GetSalary());
shturman1387 вне форума Ответить с цитированием
Старый 01.05.2015, 09:11   #3
Joose
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 67
По умолчанию

Я понимаю что это не свойство, вопрос в том какую синтаксическую конструкцию можно использовать, чтобы отсортировать массив по значениям, возвращаемым этой функцией
Joose вне форума Ответить с цитированием
Старый 01.05.2015, 09:48   #4
shturman1387
Форумчанин
 
Аватар для shturman1387
 
Регистрация: 12.06.2012
Сообщений: 110
По умолчанию

Так у вас все нормально, добавьте только скобки и все работает.
shturman1387 вне форума Ответить с цитированием
Старый 01.05.2015, 10:37   #5
Joose
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от shturman1387 Посмотреть сообщение
Так у вас все нормально, добавьте только скобки и все работает.
Это какая-то мистика... Я пробовал и со скобками, и без скобок, но ничего не работало. Не знаю что это за магия, но спасибо
Joose вне форума Ответить с цитированием
Старый 01.05.2015, 11:20   #6
shturman1387
Форумчанин
 
Аватар для shturman1387
 
Регистрация: 12.06.2012
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Joose Посмотреть сообщение
Это какая-то мистика... Я пробовал и со скобками, и без скобок, но ничего не работало. Не знаю что это за магия, но спасибо
Я не знаю, что тут мистического. Аналогично работает сортировка по убыванию.

Код:
var sortedList = list.OrderByDescending(empl => empl.GetSalary());
shturman1387 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива по значению Microplankton JavaScript, Ajax 11 17.04.2015 00:19
Сортировка по наибольшему значению Irek11 Microsoft Office Excel 4 14.08.2011 17:58
Сортировка grida по значению поля amator_roma Помощь студентам 2 30.11.2010 16:41
Возвращаемое функцией значение = находившемуся в ячейке значению motorway Microsoft Office Excel 8 14.07.2009 08:53