Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27

Сортировка коллекции по параметру

22.06.2017, 04:15. Показов 5791. Ответов 5

Студворк — интернет-сервис помощи студентам
Как произвести сортировку коллекции с несколькими значениями, к примеру в алфавитном порядке авторов, т.е. в данном случае по параметру "name".
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Collections.Generic;
 
namespace ProjectOne {
 
public class Book
{
    public string Name { get; set; }
    public string Title { get; set; }
        
    public Book (string name, string title) 
    {
    Name = name;
    Title = title;
    }
 
        public virtual void Print () 
        {
            Console.WriteLine (Name+" "+Title);
        }
}
 
    class Addition : Book 
    {
            private string year { get; set; }
            private string publisher { get; set; }
            private string cost { get; set; }
            private string quant { get; set; }
            
    public Addition(string year, string publisher, string cost, string quant, string name, string title)
    : base (name, title)
    {
    this.year = year;
    this.publisher = publisher;
    this.cost = cost;   
    this.quant = quant;
    }
 
        public override void Print () 
        {
            base.Print ();
            Console.WriteLine ("Доп.Информация: " + year+".г, "+publisher+", "+cost+".руб, "+quant+".шт. ");
        }
    }
 
    
 
    public class MainClass 
    {
        
        public static void Main () 
        {           
 
            List <Book> books = new List <Book> ();
            books.Add (new Addition ("2005","Интрейд","25","3 Корпорейшн","Достоевский","Идиот"));
            books.Add (new Addition ("2015","Эксмо","191","6","Селинджер","Над пропастью во ржи"));
            books.Add (new Addition ("2014","Neoclassic ","116","5","Паланик","Невидимки"));
            
            
            foreach (Book book in books) 
            {
                book.Print ();
            }
            
            //Console.WriteLine("\nSort");
            
            //books.Sort();
            
            //foreach (Book book in books) 
            //{
                //book.Print ();
            //}
            
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2017, 04:15
Ответы с готовыми решениями:

Сортировка коллекции
Имеется коллекция коллекций строк типа IEnumerable&lt;List&lt;string&gt;&gt;. сортирует почему-то только по первому столбцу, а при попытке...

Сортировка коллекции
Собственно сабж) namespace WpfRibbonApplication1 { class CharacterInfo { int level1 = 1; int level2 = 2; int...

Сортировка коллекции
Всем Добрый День. Можете помочь с такой вот проблемой. Есть коллекция изначально она из 4-х элементов, но в дальнейшем будет увеличивать...

5
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
22.06.2017, 07:21
C#
1
books = books.OrderBy(e => e.Name).ToList();
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.06.2017, 12:54
Или так (чтобы не создавать новый список)
C#
1
books.Sort((b1,b2) => string.Compare(b1.Name, b2.Name));
0
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27
23.06.2017, 00:02  [ТС]
Цитата Сообщение от pycture Посмотреть сообщение
books = books.OrderBy(e => e.Name).ToList();
Пишет " 'List<Book>' does't contain a definition for 'OrderBy' and noo extension method "OrderBy" accepting a first argument of type'List<>' could be found"
Цитата Сообщение от OwenGlendower Посмотреть сообщение
books.Sort((b1,b2) => string.Compare(b1.Name, b2.Name));
Хотел бы поподробнее, чтоб понять как он работает, а еще не удается отсортировать по параметрам из производного класса, даже если сделать их public. К примеру по году - "year" в данном случае
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
23.06.2017, 00:45
Лучший ответ Сообщение было отмечено Galeanes как решение

Решение

Цитата Сообщение от Galeanes Посмотреть сообщение
Хотел бы поподробнее, чтоб понять как он работает
Здесь вызывается перегрузка метода Sort принимающая делегат Comparison<T> который принимает два объекта для сравнения и возвращает отрицательное число если первый меньше второго, 0 если они равны и положительное если первый больше. Так как в данном случае сравниваются строки, то нужный результат проще всего получить если вызывать статический метод string.Compare. Само выражение сравнения записано в виде лямбда-выражения.

Цитата Сообщение от Galeanes Посмотреть сообщение
еще не удается отсортировать по параметрам из производного класса, даже если сделать их public.
Ну public их нужно сделать в любом случае потому что иначе получается класс который не дает пользоваться своими данными. Что касается сортировки, то здесь два варианта - использовать List<Addition> или, если в списке в самом деле нужно хранить разные типы, то нужно решить каким образом сравнивать Book с Addition по year если у Book он отсутствует.

Цитата Сообщение от Galeanes Посмотреть сообщение
Пишет " 'List<Book>' does't contain a definition for 'OrderBy' and noo extension method "OrderBy" accepting a first argument of type'List<>' could be found"
Нужно добавить using System.Linq;. Метод OrderBy это расширяющий метод объявленный в классе System.Linq.Enumerable и без using-а он не доступен.
1
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27
23.06.2017, 01:12  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
использовать List<Addition>
Блин так логично, аж как-то неудобно становится что я тупил, он то содержит те параметры которые содержит List<Book>, а наоборот - нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2017, 01:12
Помогаю со студенческими работами здесь

Сортировка коллекции
Доброго времени суток. Имеется: public class Event { #region Properties public string TimeFrame ...

Сортировка и группировка коллекции
Можно ли в public int CompareTo(Transport obj) { if (this.Consumption &gt; obj.Consumption) ...

Сортировка коллекции List
Здравствуйте! Надо отсортировать коллекцию List студентов по уменьшению среднего балла. Если одинаковый балл - сортировать по фамилии....

Сортировка коллекции ArrayList
Подскажите пожалуйста можно ли отсортировать коллекцию ArrayList, методом Sort, если в ней находятся различные типы. Например, что было...

Вывод и сортировка коллекции с объектами
Подскажите как можно вывести элементы из ArrayList, а затем отсортировать их. В плюсах делал для List так: #include list; ... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru