Поиск по списку C#

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
202
Благодарностей
7
Баллы
18
string db_host = ""; // хост
string db_user = ""; // username для подключения к MySQL
string db_pswd = ""; // пароль для подключения к MySQL
string db_database = ""; // название БД с которой будет работа
string db_charset = "utf8"; // кодировка данных в таблицах
// коннект к MySQL и открытие сессии

DB db = new DB(db_host, db_user, db_pswd, db_database, db_charset);

List<string> One = db.getRow("SELECT id FROM profile WHERE balance>0");

List<string> Two = db.getRow("SELECT done, sent, skip FROM exchange WHERE id_vk=" +project.Variables["id_vk"].Value);


for (int k = 0; k < One.Count; k++){

var textContains = One[0];

var sourceList = Two;

lock(SyncObjects.ListSyncer)
{
for(int i=0; i < sourceList.Count; i++)
{

var str = sourceList;

if (str == textContains)
{

project.Variables["check"].Value = "yes";
}
}
}

project.Variables["check"].Value = "no";

if (project.Variables["check"].Value == "no") {
break;
return textContains;}
}
db.close();



Прошу помощи! Нужно сделать поиск по второму списку перебирая первый список! Должно останавливаться при отсутствии совпадения и выводить это несовпадение в результат кода!
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
break; уберите, а то Вы в return не попадаете, видимо, поэтому у Вас всегда пустой результат выполнения этого кода.
Но, вообще-то у Вас логика хромает. Потому что по факту Вы проверяете лишь первую строку первого списка во втором списке. А что должно выводиться в результат, если будет 2 и более ненайденных совпадений? Помню, Вам уже помогал, кажется, сравнивать списки... Перед тем, как просить помощи, решите сами, что Вам в итоге нужно получить или объясните что и зачем Вам нужно сделать, а мы уже тут придумаем правильный алгоритм.
 

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
202
Благодарностей
7
Баллы
18
break; уберите, а то Вы в return не попадаете, видимо, поэтому у Вас всегда пустой результат выполнения этого кода.
Но, вообще-то у Вас логика хромает. Потому что по факту Вы проверяете лишь первую строку первого списка во втором списке. А что должно выводиться в результат, если будет 2 и более ненайденных совпадений? Помню, Вам уже помогал, кажется, сравнивать списки... Перед тем, как просить помощи, решите сами, что Вам в итоге нужно получить или объясните что и зачем Вам нужно сделать, а мы уже тут придумаем правильный алгоритм.
Да вы правы, в прошлый раз я спрашивал, но неправильно сформулировал задачу.

Мне нужно брать строку из первого списка и искать точное совпадение во втором списке. Если строка не найдена во втором списке то останавливать цикл и выводить эту строку в результат! (конец экшена)
А если строка найдена во втором списке, то брать из первого списка следующую строку и снова проверять ее во втором списке!
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
for (int i = 0; i < One.Count; i++){
    if(!Two.Contains(One[i])){
        project.Variables["check"].Value = "yes";
        return One[i];
    }
}
project.Variables["check"].Value = "no";
Используйте вставку кода на будущее. Так же понятнее, а то приходится код в мейкер переносить и уже там становится видно, что с ним не так
 
Последнее редактирование:
  • Спасибо
Реакции: djaga и MaksimHelp

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
202
Благодарностей
7
Баллы
18
C#:
for (int i = 0; i < One.Count; i++){
    if(!Two.Contains(One[i])){
        project.Variables["check"].Value = "yes";
        return One[i];
    }
}
project.Variables["check"].Value = "no";
Используйте вставку кода на будущее. Так же понятнее, а то приходится код в мейкер переносить и уже там становится видно, что с ним не так

C#:
lock (CommonCode.Exchange){
string db_host = "";     // хост
string db_user = "vh345077_bd";          // username для подключения к MySQL
string db_pswd = "";              // пароль для подключения к MySQL
string db_database = "vh345077_bd";      // название БД с которой будет работа
string db_charset = "utf8";       // кодировка данных в таблицах
// коннект к MySQL и открытие сессии

DB db = new DB(db_host, db_user, db_pswd, db_database, db_charset);

List<string> One = db.getAll("SELECT id_vk FROM profile WHERE balance>price AND block=0");

List<string> Two = db.getRow("SELECT done, sent, skip FROM exchange WHERE id_vk=" +project.Variables["id_vk"].Value);


   
for (int i = 0; i < One.Count; i++){
    if(!Two.Contains(One[i])){
        project.Variables["check"].Value = "yes";
        project.Variables["akk"].Value = One[i];
        var bal = db.getRow("SELECT balance FROM profile WHERE id_vk" +project.Variables["akk"].Value);
        var pri = db.getRow("SELECT price FROM profile WHERE id_vk" +project.Variables["akk"].Value);
        var locked = db.getRow("SELECT locked FROM profile WHERE id_vk" +project.Variables["akk"].Value);
        int b = String.Parse(bal);
        int p = String.Parse(pri);
        int l = String.Parse(locked);
        int zed = b / p;
        if (l<=zed){}
    }
}
project.Variables["check"].Value = "no";


db.close();
}
Привет, неудобно уже тебя просить, но сам уже измучался! Подскажи как мне правильно вставить еще одно условие? И как конвертировать строку в число?
 

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