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

Сортировка списка строк по определенной их части

28.03.2015, 21:25. Показов 2742. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется List<string[]> list; В листе записано:
C#
1
2
3
4
5
123 23 112 Василий
432 1 34 Петр
1111 2312 3233 Максим
1 2 3 4 Роберт
4 3 2 1 Артур
Как отсортировать лист, скажем, по двум колонкам, второй и четвертой?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2015, 21:25
Ответы с готовыми решениями:

Сортировка определенной части словаря
Мне нужно взять 50 элементов и отсортировать элементы с одинаковым value по У меня во так. var nums = new...

Сортировка массива по части его строк
Народ объясните как сортировать массивы вот таким способом: |12345 5|1234 54|123 543|12 5432|1 54321| То есть поиск...

Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL
Сортировка слов по количеству в них букв 'А'. Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL. Мне не...

7
Модератор
Эксперт функциональных языков программирования
3137 / 2284 / 469
Регистрация: 26.03.2015
Сообщений: 8,888
28.03.2015, 21:46
Вам нужно написать компарер и передать его в метод Sort.
C#
1
2
3
4
5
6
7
8
public class MyComparer : IComparer<string[]>
{
    public int Compare(string[] x, string[] y)
    {
        // тут логика, который из x и y должен идти впереди
        return 1;
    }
}
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
28.03.2015, 21:59
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static void Main(string[] args)
{
   List<string[]> list = new List<string[]>
   {
      new  string[]{"123","23","112","Василий"},
      new  string[]{"432","1","34","Петр"},
      new  string[]{"1111","2312","3233","Максим"},
      new  string[]{"1","2","3","4","Роберт"},
      new  string[]{"4","3","2","1","Артур"}
   };
 
   var E = 
       list
       .OrderBy(x => int.Parse(x[0]))
       .Select(s => s.Select(x => x.PadRight(7)));       
 
   foreach (var item in E)
   {
       Console.WriteLine(string.Join(" ",item));
   }
}
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
28.03.2015, 23:00
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Linq.Expressions;
 
namespace ConsoleApplication9
{
    public static class ListExtensions
    {
        public static void SortByColumns<T>(this List<T> ob, Expression<Func<int, bool>> columnsNumbers) where T : IList<string>
        {
            Func<int, bool> deleg = columnsNumbers.Compile();
            IEnumerable<T> data = ob.Where(s => deleg(ob.IndexOf(s)));
            foreach (T strArr in data)
            {
                for (int i = 0; i < strArr.Count - 1; i++)
                {
                    for (int j = i + 1; j < strArr.Count; j++)
                    {
                        double iNum = 0;
                        double jNum = 0;
                        if (double.TryParse(strArr[i], out iNum) == false & double.TryParse(strArr[j], out jNum) == false)
                        {
                            if (strArr[i].CompareTo(strArr[j]) == 1)
                            {
                                string temp = strArr[i];
                                strArr[i] = strArr[j];
                                strArr[j] = temp;
                            }
                        }
                        else 
                        {
                            if (iNum > jNum)
                            {
                                string temp = strArr[i];
                                strArr[i] = strArr[j];
                                strArr[j] = temp;
                            }
                        }
                    }
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<string[]> list = new List<string[]> { new string[] { "1", "8", "2", "6" }, new string[] { "b", "a", "d", "c" } };
            list.SortByColumns(col => col == 0 || col == 1);
        }
    }
}
Добавлено через 9 минут
строки сортирует по алфавиту, цифры сортирует по арифметике, если в массиве есть и цифры и строки то сортирует отдельно.
0
1 / 1 / 1
Регистрация: 26.04.2014
Сообщений: 119
28.03.2015, 23:09  [ТС]
pro_100_gram, столбцы же сортирует, а не строки
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
28.03.2015, 23:16
Artem93z, ну каждый столбец списка - это массив (или что угодно реализующее IList) строк, строки в выбранных столбцах сортируются сначала по буквам потом по цифрам, например "a 3 c 1 b 2" => "a b c 1 2 3"
0
1 / 1 / 1
Регистрация: 26.04.2014
Сообщений: 119
28.03.2015, 23:22  [ТС]
pro_100_gram, строки должны оставаться такими, как были, но меняться местами. Это называется сортировка строк по столбцу. А мне вообще нужна сортировка по двум столбцам. пример:
C#
1
2
3
4
5
1 2 4 3
1 2 3 4
2 1 5 5
2 1 5 5
2 0 0 1
Сортировка по двум столбцам, сначала по первому, потом по третьему -
C#
1
2
3
4
5
1 2 3 4
1 2 4 3
2 0 0 1
2 1 5 5
2 1 5 5
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
28.03.2015, 23:27
Artem93z, ну это совсем другое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2015, 23:27
Помогаю со студенческими работами здесь

Iframe определённой части
в iframe надо отображатб не верхний левый край другого сайта а область немного в стороне вот страница &lt;!DOCTYPE html&gt; ...

Считывание с определённой строки и пауза сканирования строк до появления в файле новых строк
Здравствуйте все, кто заинтересовался моей темой. Я не так давно начал изучать Java, так что много чего не знаю, по этой причине прошу...

Удаление с теста определённой части
Есть некоторый текст. Вот пример {'content_type' 'sticker', 'message_id' 513, 'from_user' {'id' 787574338, 'is_bot' False, 'first_name'...

Удаление из строки определенной ее части
Всем привет! Подскажите пожалуйста, каким образом можно удалить из строки известную часть. вообще речь идёт о путях. к примеру у меня...

Привязка к определенной части окна
Просьба помочь со след задачей. Надо чтоб вся зона графиков была в определенном прямоугольнике. (1/4 экрана). и изменяя координаты...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru