Помогите изменить алгоритм сравнения переменной и строк в списке

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
В C# пока не шарю. Имеется код сравнения переменной и строк в списке.
 

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Сравниваем «значение переменной» со «списком»,

если в списке имеется несколько строк содержащих «значение переменной», то волов) в списке остается только самая длинная строка (по количеству символов), остальные строки, содержащие данную «переменную», удаляются.

если только одна строка содержит значение «переменной», то переходим к следующий переменной для сравнения со списком (из списка ничего не удаляется).
 

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Как изменить данный код, чтобы выполнял вышеуказанную задачу? Может кто поможет?


  1. // берем из переменной текст, который надо искать
  2. var textContains = project.Variables["listSearchTextContains"].Value;
  3. // получаем список, в котором будем искать
  4. var sourceList = project.Lists["SourceList"];
  5. // ищем в каждой строчке в списке
  6. lock(SyncObjects.ListSyncer)
  7. {
  8. for(int i=0; i < sourceList.Count; i++)
  9. {
  10. // читаем строку из списка
  11. var str = sourceList;
    [*] // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
    [*] if (str.Contains(textContains))
    [*] return "yes";
    [*] }
    [*]}
    [*]// если ничего не нашли возвращаем "no"
    [*]return "no";
 

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Число символов и букв в тексте

// Count characters
string stringToCount = "Hello World";
return stringToCount.Length.ToString();

// или такой вариант
string str = project.Variables["Var"].Value;
return str.Length;



Как все это собрать воедино?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
IZennoList list = project.Lists["List"]; // список, в котором искать
string str = project.Variables["text"].Value; // переменная с текстом, который искать

lock (SyncObjects.ListSyncer) {
    List<string> tmpList = list.Where(s => s.Contains(str)).OrderByDescending(s => s.Length).ToList();
    if (tmpList.Count > 1) {
        tmpList.RemoveAt(0);
        tmpList = list.Except(tmpList).ToList();
        list.Clear();
        list.AddRange(tmpList);
    }
}
 
  • Спасибо
Реакции: ТРОН, kagorec и POLOZ

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Оуу!! Спасибо, Dimionix! Пойду пробовать.
 

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Все получилось! Еще раз спасибо, Dimionix.
 
  • Спасибо
Реакции: Dimionix

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