Спипет: Поиск совпадения в таблице по колонке

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113
Нужен снипет поиска совпадения из переменной в таблице в одной колонке. Если есть совпадение выходим по ошибке, если нет работаем дальше. Совпадение будет одно.

Поделитесь решением если не трудно. У себя в архиве никак не могу найти ничего подходящего.
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Код:
var table = project.Tables["table"];
string col = "A"; //Название колонки
string str = project.Variables["str"].Value;//переменная с текстом для поиска совпадений
for(int i = 0; i < table.RowCount; i++)
{
    if(table.GetCell(col, i).Trim().Contains(str)) throw new Exception(); //если есть вхождение
    if(table.GetCell(col, i).Trim().Equals(str)) throw new Exception(); // если точное совпадение
    if(table.GetCell(col, i).Trim().StartsWith(str)) throw new Exception();// если начинается на str
    if(table.GetCell(col, i).Trim().EndsWith(str)) throw new Exception(); //если заканчивается на str
}
 

Blackvil

Client
Регистрация
11.06.2021
Сообщения
53
Благодарностей
9
Баллы
8
Код:
var table = project.Tables["table"];
string col = "A"; //Название колонки
string str = project.Variables["str"].Value;//переменная с текстом для поиска совпадений
for(int i = 0; i < table.RowCount; i++)
{
    if(table.GetCell(col, i).Trim().Contains(str)) throw new Exception(); //если есть вхождение
    if(table.GetCell(col, i).Trim().Equals(str)) throw new Exception(); // если точное совпадение
    if(table.GetCell(col, i).Trim().StartsWith(str)) throw new Exception();// если начинается на str
    if(table.GetCell(col, i).Trim().EndsWith(str)) throw new Exception(); //если заканчивается на str
}
Здравствуйте! Подскажите, а как получить номер этой найденной строки, когда получили точное совпадение?
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
178
Благодарностей
28
Баллы
28
Код:
var table = project.Tables["table"];
string col = "A"; //Название колонки
string str = project.Variables["str"].Value;//переменная с текстом для поиска совпадений
for(int i = 0; i < table.RowCount; i++)
{
    if(table.GetCell(col, i).Trim().Contains(str)) throw new Exception(); //если есть вхождение
    if(table.GetCell(col, i).Trim().Equals(str)) throw new Exception(); // если точное совпадение
    if(table.GetCell(col, i).Trim().StartsWith(str)) throw new Exception();// если начинается на str
    if(table.GetCell(col, i).Trim().EndsWith(str)) throw new Exception(); //если заканчивается на str
}
нужен вариант, чтобы удалял все строки из таблицы по точному совпадению в рамках столбца. И важно чтобы это работало на многопотоке, при параллельной записи в эту же таблицу новых строк.
Закинул этот сниппет чату гпт, тот дал будто бы рабочий вариант, но что-то он юлит на тему корректной работы на многопотоке. Может кто-то подтвердить, что это будет работать при параллельной записи/удалении строк? И если нет, как это можно реализовать?

Код:
var table = project.Tables["table"];
string col = "A"; // Название колонки
string str = project.Variables["str"].Value; // Переменная с текстом для поиска совпадений

for (int i = table.RowCount - 1; i >= 0; i--) // Обратный цикл
{
    if (table.GetCell(col, i).Trim().Equals(str))
    {
        table.DeleteRow(i); // Удаление строки
    }
}
 

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