Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
23.05.2013, 00:29
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
допустим есть какой то класс, и его надо отсортировать по полю, скажем Name. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
всё вроде работает , но как то коряво смотрится. наверняка есть способы и правильнее и красивше. скажем в метод подаётся имя поля , по которому сортируется , и сам массив, или коллекция Код: c# 1. 2. 3. 4.
скорость наверное тут не особо важна . миллион строк сортировать никто не намерен. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 00:54
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
beg-in-er, а Linq чем не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 00:56
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
Lelouch, да всё подходит. чёта просто не вижу более простых способов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 00:59
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
beg-in-er, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 01:16
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
bazile, Спасибо. но возникает 2 вопроса, 1. если в зависимости от условий надо будет сортануть не по полю Name а по другому, по Х что делать с методом CompareTo 2. если допустить , что нужно сортировать одновременно по 2м полям, ну типа сначала Name , потом X то как быть в такой ситуации. может вопрос и простой. просто в своё время не закрыл его , а нынче вроде оно надо , а голова не варит в этом направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 01:20
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
beg-in-er, 1. IComparer<T> + List<T>.Sort(IComparer<T>) 2. Напиши код которое это учтет. Если Name не равны, то возвращаем результат их сравнения, иначе сравниваем X. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 06:56
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
Зачем изобретать велосипед? var collection = List<SomeClass> Код: c# 1. 2.
Для двух полей: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 10:42
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
LameUser, хорошее предложение, только отсортировать по двум полям можно и без LINQ - sm.Sort((first,second) => { int temp = first.Name.CompareTo(second.Name); return temp == 0 ? first.X - second.Y : temp;}); ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 12:42
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
bazileLameUser, хорошее предложение, только отсортировать по двум полям можно и без LINQ - sm.Sort((first,second) => { int temp = first.Name.CompareTo(second.Name); return temp == 0 ? first.X - second.Y : temp;}); Чем так плох линк? Он вроде как более синтаксически понятен нежели ваше лямбда выражение. Если сортировать по трем полям будет еще запутаннее лямбда. Учитывая авторскорость наверное тут не особо важна . миллион строк сортировать никто не намерен. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.05.2013, 13:28
|
|||
---|---|---|---|
как грамотно отсортировать коллекцию? |
|||
#18+
LameUserЧем так плох линк? Он вроде как более синтаксически понятен нежели ваше лямбда выражение. Лишней тратой памяти. Мы же новый List создаем. Хотя раз больших объемов данных не ожидается, то это можно пережить. LameUserЕсли сортировать по трем полям будет еще запутаннее лямбда. Согласен. Но тогда можно вернуться к варианту с IComparer<T>. Особенно если эта сортировка нужна в нескольких местах. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1404639]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 579ms |
0 / 0 |