Как на C# проверить наличие в списке?

  • Автор темы Автор темы squirrel
  • Дата начала Дата начала

squirrel

Client
Регистрация
27.08.2015
Сообщения
10
Реакции
2
Баллы
3
Есть список Names. Нужно проверить наличие в нем строки "Vasya".
Вот, нагуглил решение:
Код:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"]; //привязываемся к списку
string Rez;
string Element = "Vasya";
string Filescreated = Names.Find((x) => x == Element);
                if (Filescreated!="") Rez = "0";
                else Rez = "1";
return Rez;
Но зенка на это ругается: 10:03:16 Компиляция кода Ошибка в действии "CS1061" ""ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" не содержит определение для "Find". Не удалось найти метод расширения "Find", принимающий первый аргумент типа "ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" (пропущена директива using или ссылка на сборку?)".

Подскажите, что не так?

Директивы using System.Linq и using System.Collections.Generic подключены по умолчанию, а больше не знаю куда и смотреть...
 
Есть список Names. Нужно проверить наличие в нем строки "Vasya".
Вот, нагуглил решение:
Код:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"]; //привязываемся к списку
string Rez;
string Element = "Vasya";
string Filescreated = Names.Find((x) => x == Element);
                if (Filescreated!="") Rez = "0";
                else Rez = "1";
return Rez;
Но зенка на это ругается: 10:03:16 Компиляция кода Ошибка в действии "CS1061" ""ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" не содержит определение для "Find". Не удалось найти метод расширения "Find", принимающий первый аргумент типа "ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" (пропущена директива using или ссылка на сборку?)".

Подскажите, что не так?

Директивы using System.Linq и using System.Collections.Generic подключены по умолчанию, а больше не знаю куда и смотреть...
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"]; //привязываемся к списку
string Element = "Vasya";
return Names.Contains(Element); // True/False
 
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"]; //привязываемся к списку
string Element = "Vasya";
return Names.Contains(Element); // True/False
Привет. Использую для определения пола и не только. Подскажи, можно сделать поиск по точному вхождению. Что бы считалось слово целиком. Например Vasya$.
А то у меня значение "Екатерина Андреева" определил как мужской пол по имени "Андре".
Вообще конечно лучше регулярки, потому что регистрозависимый поиск получается.
 
Последнее редактирование:
  • Оценить
Реакции: irving zisman и seodima
Привет. Использую для определения пола и не только. Подскажи, можно сделать поиск по точному вхождению. Что бы считалось слово целиком. Например Vasya$.
А то у меня значение "Екатерина Андреева" определил как мужской пол по имени "Андре".
Вообще конечно лучше регулярки, потому что регистрозависимый поиск получается.
Вообще Сontains по точному вхождению и ищет.
Если надо регекспом можно так:
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"];
Regex re = new Regex("Vasya",RegexOptions.IgnoreCase);
return Names.Any(item => re.IsMatch(item));
 
  • Оценить
Реакции: GreenWay и Mikhail B.
Вообще Сontains по точному вхождению и ищет.
Если надо регекспом можно так:
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["names"];
Regex re = new Regex("Vasya",RegexOptions.IgnoreCase);
return Names.Any(item => re.IsMatch(item));
А можно еще сделать так, что бы вместо Vasya я мог подставлять переменную из проекта, а еще лучше регулярку целиком если так вобще можно. Просто значения разные, могут быть символы разные, лучше я буду в прокете готовить заранее регулярку обработкой текста. А уже сниппет обрабатывал бы готовый вариант.

Я вобще не понимаю как "Екатерина Андреева", определятся как мужской и как женский пол. У меня два списка с именами я чекаю значение в каждом из них. Может я не правильно сниппет составил?
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["FEMALE"]; //привязываемся к списку
lock (SyncObjects.ListSyncer)
 {
string Element = project.Variables["NAME"].Value;
return Names.Contains(Element); // True/False
 }
 
Последнее редактирование:
А можно еще сделать так, что бы вместо Vasya я мог подставлять переменную из проекта, а еще лучше регулярку целиком если так вобще можно. Просто значения разные, могут быть символы разные, лучше я буду в прокете готовить заранее регулярку обработкой текста. А уже сниппет обрабатывал бы готовый вариант.

Я вобще не понимаю как "Екатерина Андреева", определятся как мужской и как женский пол. У меня два списка с именами я чекаю значение в каждом из них. Может я не правильно сниппет составил?
C#:
Развернуть Свернуть Копировать
IZennoList Names = project.Lists["FEMALE"]; //привязываемся к списку
lock (SyncObjects.ListSyncer)
{
string Element = project.Variables["NAME"].Value;
return Names.Contains(Element); // True/False
}

Оно ?
C#:
Развернуть Свернуть Копировать
string nameRegexp = project.Variables["nameRegexp"].Value; // nameRegexp - название зенно переменной
IZennoList Names = project.Lists["names"];
Regex re = new Regex(nameRegexp, RegexOptions.IgnoreCase);
return Names.Any(item => re.IsMatch(item));
 
Пример того, что по Contains вхождение не точное.
@VladZen
 

Вложения

Последнее редактирование:
  • Оценить
Реакции: ZX
оно и не будет точным, поставь сравнение с буквой а, вытащит первое вхождение, строку в +100500 символов если там присутствует буква а
 
Пример того, что по Contains вхождение не точное.
Чудеса блин, админы это как ?

оно и не будет точным, поставь сравнение с буквой а, вытащит первое вхождение, строку в +100500 символов если там присутствует буква а

Еще бы в доках написали что метод переопределен, а то тишинамс:
http://help.zennolab.com/en/v5/zennoposter/5.17.0.0/topic898.html#
 
  • Оценить
Реакции: ZX
попробуй так
Код:
Развернуть Свернуть Копировать
var sourceList = project.Lists["SourceList"];
sourceList.Add("test test");
sourceList.Add("test");

return sourceList.First(s=>s == "test");

в этом случае найдёт именно test
 
попробуй так
Код:
Развернуть Свернуть Копировать
var sourceList = project.Lists["SourceList"];
sourceList.Add("test test");
sourceList.Add("test");

return sourceList.First(s=>s == "test");

в этом случае найдёт именно test
Да, но Contains должен тоже возвращать true только если полное совпадение, получается или компаратор переопределен, или метод, но информации об этом нет.
 
Оно ?
C#:
Развернуть Свернуть Копировать
string nameRegexp = project.Variables["nameRegexp"].Value; // nameRegexp - название зенно переменной
IZennoList Names = project.Lists["names"];
Regex re = new Regex(nameRegexp, RegexOptions.IgnoreCase);
return Names.Any(item => re.IsMatch(item));
Да этот метод все правильно определил. Пример шаблона (определения пола по имени) ниже, если кому надо.
Определить найти узнать пол по списку по имени мужской женский м ж половой признак определить пол чекнуть пол узнать пол
 

Вложения

Последнее редактирование:
Да, но Contains должен тоже возвращать true только если полное совпадение, получается или компаратор переопределен, или метод, но информации об этом нет.

ответ true, но это не говорит что полное совпадение со строкой
Код:
Развернуть Свернуть Копировать
var sourceList = project.Lists["SourceList"];
sourceList.Add("test test");
sourceList.Add("test");

return sourceList.Any(s=>s.Contains("test"));
 
  • Оценить
Реакции: TeslaCo
ответ true, но это не говорит что полное совпадение со строкой
Код:
Развернуть Свернуть Копировать
var sourceList = project.Lists["SourceList"];
sourceList.Add("test test");
sourceList.Add("test");

return sourceList.Any(s=>s.Contains("test"));
Вы путаете String.Contains и Collection.Contains
Contains примененный к строке, ищет совпадение внутри строки, т.к. внутри строки есть test то, мы получаем true
А Contains примененный к коллекции, ищет совпадение объекта внутри коллекции, именно объекта, поэтому по умолчанию должно срабатывать только при полном соответствии.
 
Обновил шаблон Определение пола по спискам регулярка v 0.7
Прочекал 100к имен с Авито. Произвел необходимые правки. Немного пополнил списки с именами.
Определить найти узнать пол по списку по имени мужской женский м ж половой признак определить пол чекнуть пол узнать пол
 

Вложения

  • Оценить
Реакции: Zlodey-

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