Очистить список до

kagorec

Client
Регистрация
24.08.2013
Сообщения
921
Благодарностей
473
Баллы
63
Подскажите как можно почистить список до определенной строки которая совпадает со значением переменной "calendar" (12.12.2016) ?
Список содержит построчно разные значения:
05.12.2016
06.12.2016
07.12.2016
08.12.2016
09.12.2016
10.12.2016
11.12.2016
12.12.2016
13.12.2016
14.12.2016
15.12.2016

После очистки имеем
13.12.2016
14.12.2016
15.12.2016
16.12.2016
17.12.2016
18.12.2016
19.12.2016
20.12.2016

Обработка списков видимо не подходит, пробовал регуляркой не прокатило))
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
915
Баллы
113
Если через кубики, то:
1. берем первую строку с удалением
2. сверяем её со сзначением calendar
3.1 если различаются, то переходим к пункту 1
3.2 если совпадают то значит все очистили

И ещё вариант на шарпе написать. Тут не сложно.
 
Последнее редактирование:
  • Спасибо
Реакции: kagorec

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Ну можно так попробывать

C#:
var stroka = "12.12.2016";
var sourcelist = project.Lists["SourceList"];

for (int i = 0; i < sourcelist.Count; i++)
{
    var str = sourcelist[i];
   
    if(str == stroka)
    {
        sourcelist.RemoveAt(i);
        return null;
    }
   
    sourcelist.RemoveAt(i);
    i--;
}
 
  • Спасибо
Реакции: kagorec

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
C#:
var list = project.Lists["Список 1"];
string date = "13.12.2016";

int limit = list.IndexOf(date);
if (limit==-1) limit = list.Count;

for (int i=0; i<limit; i++)
    list.RemoveAt(0);
 
  • Спасибо
Реакции: kagorec

kagorec

Client
Регистрация
24.08.2013
Сообщения
921
Благодарностей
473
Баллы
63
Попробовал снипеты, не удаляет почемуто. Или в PM так и должно быть:?
Запускал с момента снипета, потом проверял содержимое списка, и текстовика к которому привязан список.

 

S16er1um

Client
Регистрация
14.04.2016
Сообщения
826
Благодарностей
240
Баллы
43
да бери строки поштучно из блокнота и сверяй. если != - удаляй. ну типа просто иди к действию взять следующюю строку. а если сошлись, то продолжай дальнейшую работу шаблона
 
  • Спасибо
Реакции: kagorec

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
чтобы посмотреть - жми кнопку просмотр содержимого
 
  • Спасибо
Реакции: kagorec

kagorec

Client
Регистрация
24.08.2013
Сообщения
921
Благодарностей
473
Баллы
63
да бери строки поштучно из блокнота и сверяй. если != - удаляй. ну типа просто иди к действию взять следующюю строку. а если сошлись, то продолжай дальнейшую работу шаблона
Это понятно, также как выше Lightwood предложил стопроцентный вариант но на кубиках.
---
Остановился на компактном решении в снипете от doc, работает со статичным данными
var list = project.Lists["Список 1"];
string date = "13.12.2016";
...
а переменную когда пробую подставить то все удаляет
var list = project.Lists["Список 1"];
string date = project.Variables["calendar"].Value;
...

Решено, перепроверил что имеет переменная calendar, позади был лишний пробел)
п.с. сохранив надо было открыть заново проект в PM, иначе список некорректно отображался.
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
оба варианта одинаковы в моём удаляет до нужного сразу, а у doc ищет сначала индекс а потом удаляет то же самое что и в моём

P.S. Здесь можно по разному подойти, наприапер удалять больше строк надо чем останется, тогда проще перезаписать от найденого индекса, а то может удалять 100000 строк надо а останется всего 100 нужных, получается лишние циклы хоть они и в секунду произойдут
 
  • Спасибо
Реакции: kagorec

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