Сравнить переменную со списком на полное вхождение С#

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Оба кода найдены на просторах форума
C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["iskll"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["isklucheniya"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
            return "yes";
    }
}
// если ничего не нашли возвращаем "no"
return "no";


C#:
var list = project.Lists["isklucheniya"];
var needle = project.Variables["iskll"].Value;

foreach(string data in list)
{
if(data.Contains(needle))
{
return "true";
}
}
return "false";
В списке значения вида:

+38050495430
+38050458400
+38050473486
+38050436426

В переменной могут быть или вида:
+38050458466
или
dkfjgh67dk


Вот когда в переменной буквы - и тот и тот код отрабатывает как нужно,
если же в переменной цифры, даже не совпадающие со списком, код отрабатывает как будто совпадение найдено.

Есть у меня смутное подозрение что код отрабатывает по части совпадения, но увы знаний в этом вопросе нет.
Прошу подправить любой из вышеприведенных кодов.
 
  • Спасибо
Реакции: Mangazey

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
271
Баллы
63
Так и есть, Contains вхождение определяет. Вот код, чтобы определить есть ли точное совпадение переменной с какой-либо строкой из списка:

C#:
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
return list.IndexOf(check); // - вернёт номер строки, если она есть, или -1, если строки нет.
 
  • Спасибо
Реакции: Mutant

alex1988

Client
Регистрация
13.07.2014
Сообщения
358
Благодарностей
141
Баллы
43
Как по мне спискамы сравнивать быстрее
C#:
var list1 = project.Lists["keyspisok"];
var list2 = project.Lists["blacklistspisok"];
var list3 = list1.Except(list2);
project.Lists["keywords_ok"].AddRange(list3);
 

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Так и есть, Contains вхождение определяет. Вот код, чтобы определить есть ли точное совпадение переменной с какой-либо строкой из списка:

C#:
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
return list.IndexOf(check); // - вернёт номер строки, если она есть, или -1, если строки нет.
Да, это то что мне нужно!
 

Mutant

Client
Регистрация
19.09.2014
Сообщения
187
Благодарностей
36
Баллы
28
Как по мне спискамы сравнивать быстрее
C#:
var list1 = project.Lists["keyspisok"];
var list2 = project.Lists["blacklistspisok"];
var list3 = list1.Except(list2);
project.Lists["keywords_ok"].AddRange(list3);

Спасибо, этот код знаю, но у меня переменная формируется по ходу выполнения, и она одна, поэтому загонять ее в список немножко ресурсоемко :-)
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93
C#:
string test = project.Variables["check_text"].Value;
var list = project.Lists["list_for_check"];
if (!list.Contains(test))
throw new Exception("");
 
  • Спасибо
Реакции: Mutant

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