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

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
141
Благодарностей
8
Баллы
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 695
Благодарностей
3 952
Баллы
113
Так вам количество совпадений нужно или сами значения ячеек с совпадениями?
Если первое:
1. Заведите отдельный счётчик. Например int counter = 0;
2. Вместо return i; увеличивайте его counter++;
3. После цикла выводите его return counter.ToString();
 

Vamp1k

Client
Регистрация
03.05.2016
Сообщения
298
Благодарностей
127
Баллы
43
Попробуйте так
Но предупреждаю, если раньше код завершался когда находил нужное значение, сейчас пока не пробежит по всем ячейкам не завершится!
И возвращать будет не номер строки а координаты ячейки, если все таки нужен номер строки, замените 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;
 

Vamp1k

Client
Регистрация
03.05.2016
Сообщения
298
Благодарностей
127
Баллы
43

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