Всем привет! Не подскажете, как можно сделать сортировку данных в таблице, но начиная с определенной строки таблицы, допустим с 10 строки, чтобы верхние строки так и оставались на нужном месте?
Да. Собрать в список столбец начиная с 10й строки. Потом просто сортировать список и вставить обратно в таблицу.На ум приходит только через списки. Взятие строк из таблицы, поместить в список, ой там пзд начинается из кубиков. Гуру если снизойдут, мб накидают на коде..
А тут такая ситуация, в начале не написал, у меня несколько столбцов в таблице. Если я какой то столбец отсортирую в списке, то как с остальными быть, тогда не будут данные соответствовать друг другу?Да. Собрать в список столбец начиная с 10й строки. Потом просто сортировать список и вставить обратно в таблицу.
В коде это будет выглядеть почти так же, как и на кубиках. Просто кубиками можно не организовывать циклы, так как кубик "запись в список" и есть цикл.
var table = project.Tables["data"];//таблица
int sortByCol = 2;//колонка, по которой сортировать. отсчет с 0
int rowLeave = 3;//сколько строк отступить сначала
//заполняю табличку тестовыми данными
table.AddRow(new[]{"asd","fe","edf","dg","db"});
table.AddRow(new[]{"db","df","db","dfb","dfb"});
table.AddRow(new[]{"sa","asd","dbfs","dfbds","dvfb"});
table.AddRow(new[]{"we","we","6","we","we"});
table.AddRow(new[]{"sd","w","1","qwe","e"});
table.AddRow(new[]{"sf","sdf","3","s","sdf"});
table.AddRow(new[]{"sdf","sdf","2","sdf","sdf"});
table.AddRow(new[]{"sdf","1","5","2","2"});
table.AddRow(new[]{"1","2","4","3","hjgsd"});
//
var items = table.GetItems($"{rowLeave}-end", true).Select(x=>x.ToArray()).ToList();
items.OrderBy(cols=>cols[sortByCol]).ToList().ForEach(row=>table.AddRow(row));
Списибо большое тебе, добрый человек) А не подскажите еще такой момент, я поменял в коде на сортировку по убыванию, но он вот так сортирует, я так понимаю это из-за точки он распознает ее как большее число, можно как то в этом коде сразу сделать, чтобы он заменял на запятую перед сортировкой?Посмотреть вложение 101475C#:var table = project.Tables["data"];//таблица int sortByCol = 2;//колонка, по которой сортировать. отсчет с 0 int rowLeave = 3;//сколько строк отступить сначала //заполняю табличку тестовыми данными table.AddRow(new[]{"asd","fe","edf","dg","db"}); table.AddRow(new[]{"db","df","db","dfb","dfb"}); table.AddRow(new[]{"sa","asd","dbfs","dfbds","dvfb"}); table.AddRow(new[]{"we","we","6","we","we"}); table.AddRow(new[]{"sd","w","1","qwe","e"}); table.AddRow(new[]{"sf","sdf","3","s","sdf"}); table.AddRow(new[]{"sdf","sdf","2","sdf","sdf"}); table.AddRow(new[]{"sdf","1","5","2","2"}); table.AddRow(new[]{"1","2","4","3","hjgsd"}); // var items = table.GetItems($"{rowLeave}-end", true).Select(x=>x.ToArray()).ToList(); items.OrderBy(cols=>cols[sortByCol]).ToList().ForEach(row=>table.AddRow(row));
остается только разобраться, что за данные в колонке, чтобы они сортировались так, как ожидается.
Списибо большое тебе, добрый человек) А не подскажите еще такой момент, я поменял в коде на сортировку по убыванию, но он вот так сортирует, я так понимаю это из-за точки он распознает ее как большее число, можно как то в этом коде сразу сделать, чтобы он заменял на запятую перед сортировкой?
остается только разобраться, что за данные в колонке, чтобы они сортировались так, как ожидается.
items.OrderByDescending(cols=>decimal.Parse(cols[sortByCol].Replace(".",","))).ToList().ForEach(row=>table.AddRow(row));
items.OrderByDescending(cols=>decimal.Parse(cols[sortByCol].Replace(".",","))).ToList().ForEach(row=>table.AddRow(row));
Посмотреть вложение 101486
Извините, пожалуйста, мой косяк Не с того номера строки просто сортировка была в начале. Поправил, теперь работает, спасибо еще разНу, так следите за тем, что у Вас в таблице. Вы ошиблись рядом и код не может преобразовать заголовок в число.