Подскажите по C# пожалуйста

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
165
Благодарностей
13
Баллы
18
Есть код:

// берем из переменной текст, который надо искать
var textContains = project.Variables["findtext"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["Table"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
for(int i=0; i < sourceTable.RowCount; i++)
{


// читаем строку из таблицы (это будет массив ячеек)
var cells = sourceTable.GetRow(i).ToArray();

// пройдем в цикле по всем ячейкам
for (int j=0; j < cells.Length; j++)
{
// проверяем содержание текста в ячейке, если есть совпадение возвращаем "yes"
if (cells[j].Contains(textContains)){

// После того как найдено первое совпадение, получаем значение ячейки в переменную findText
var findText = cells[j];

//Сравниваем значение найденой ячейки с искомым текстом, если равно, возвращаем номер строки, если нет идём дальше
if(findText==textContains){
return i;
}

else {
j++;
}

}
}
}
// если ничего не нашли возвращаем "no"
return "no";
}

Сейчас в ответ приходит первое совпадение. А мне нужно понять как сделать 2,3 и так далее
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113
Так вам количество совпадений нужно или сами значения ячеек с совпадениями?
Если первое:
1. Заведите отдельный счётчик. Например int counter = 0;
2. Вместо return i; увеличивайте его counter++;
3. После цикла выводите его return counter.ToString();
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
537
Благодарностей
281
Баллы
63
Попробуйте так
Но предупреждаю, если раньше код завершался когда находил нужное значение, сейчас пока не пробежит по всем ячейкам не завершится!
И возвращать будет не номер строки а координаты ячейки, если все таки нужен номер строки, замените result += $"{i}.{j} | "; на result += $"{i};";

C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["findtext"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["Table"];
// ищем в каждой строчке в таблице
var result = string.Empty;

lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // пройдем в цикле по всем ячейкам
        for (int j=0; j < cells.Length; j++)
        {
            // проверяем содержание текста в ячейке, если есть совпадение возвращаем "yes"
            if (cells[j].Contains(textContains))
            {
                
                // После того как найдено первое совпадение, получаем значение ячейки в переменную findText
                var findText = cells[j];
                
                //Сравниваем значение найденой ячейки с искомым текстом, если равно, возвращаем номер строки, если нет идём дальше
                if(findText==textContains)
                {
                    result += $"{i}.{j} | ";
                }
                
                else
                {
                    j++;
                }
            
            }
        }
    }
}

return result;
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
537
Благодарностей
281
Баллы
63

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