Поиск n-го количества "наибольших" чисел в таблице.

Nixens

Client
Регистрация
18.02.2018
Сообщения
288
Благодарностей
7
Баллы
18
Есть таблица с числами в одномиз столбцов: http://prntscr.com/15eo2kc
Максимальное значение "100+": http://prntscr.com/15eo4gd
Мне нужно получить 20 (n) строк, где находятся наибольшие числа.
Т.е строки где: 98, 96 ,23, 14, 12, 11, и т.д.
Их можно как перезаписать в другую таблицу - сделать копию строк. Так и построить алгоритм, где последовательно будут находится строки, и оттуда уже буду выдергивать нужные мне столбцы. В общем хз как такой поиск по таблице реализовать.
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
Есть таблица с числами в одномиз столбцов: http://prntscr.com/15eo2kc
Максимальное значение "100+": http://prntscr.com/15eo4gd
Мне нужно получить 20 (n) строк, где находятся наибольшие числа.
Т.е строки где: 98, 96 ,23, 14, 12, 11, и т.д.
Их можно как перезаписать в другую таблицу - сделать копию строк. Так и построить алгоритм, где последовательно будут находится строки, и оттуда уже буду выдергивать нужные мне столбцы. В общем хз как такой поиск по таблице реализовать.
С помощью "Операции над таблицей" можно сортировать строки таблицы по нужному столбцу по убыванию. Затем в цикле с наращиваемым от нуля счетчиком (номером строки) копируете строки в другую таблицу, кол-во итераций цикла будет равно кол-ву копируемых строк.
 
  • Спасибо
Реакции: Nixens

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
C#:
var table = project.Tables["table"];                       
List<string> numbers = table.GetColumn("A")//тут название колонки столбца с числами
                            .Select(x => Regex.Match(x, @"\d+").Value)//парсим реджексом числа как строки
                            .Where(x => int.TryParse(x, out var v))//отбираем строки с числами (чтоб null не попался)
                            .OrderByDescending(x => int.Parse(x))//сортируем
                            .Take(20)//тут сколько нужно строк взять
                            .ToList();
 
  • Спасибо
Реакции: Nixens

Nixens

Client
Регистрация
18.02.2018
Сообщения
288
Благодарностей
7
Баллы
18
С помощью "Операции над таблицей" можно сортировать строки таблицы по нужному столбцу по убыванию. Затем в цикле с наращиваемым от нуля счетчиком (номером строки) копируете строки в другую таблицу, кол-во итераций цикла будет равно кол-ву копируемых строк.
При сортировке выдает такую ошибку, хоть и файл и столбец есть: http://prntscr.com/15gbkaj
Кубиком С#, тоже выдает ошибку: http://prntscr.com/15gbn7e

после кубика C# взять столбец тоже не может. http://prntscr.com/15gelhp
Ошибка везде одинаковая теперь: http://prntscr.com/15gbn7e
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
При сортировке выдает такую ошибку, хоть и файл и столбец есть: http://prntscr.com/15gbkaj
Колонки нужно задать с помощью букв.
78827


Но, сортировка будет "ломаться" из-за того, что в таблице есть значение "100+", его лучше заменить на какое-то число (101, например).
 

Nixens

Client
Регистрация
18.02.2018
Сообщения
288
Благодарностей
7
Баллы
18
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
  • Спасибо
Реакции: Nixens

Nixens

Client
Регистрация
18.02.2018
Сообщения
288
Благодарностей
7
Баллы
18

Nixens

Client
Регистрация
18.02.2018
Сообщения
288
Благодарностей
7
Баллы
18
Да. Все. Разобрался. Нормально отсортировал. Была одна строка с пустым значением в нужной ячейке и её заносил.
И сделал кубик, который удаляет только пробельные символы на всякий.
 
  • Спасибо
Реакции: Sergodjan

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)