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

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

one

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

Поделитесь решением если не трудно. У себя в архиве никак не могу найти ничего подходящего.
 
Код:
Развернуть Свернуть Копировать
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 = 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 = 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); // Удаление строки
    }
}
 

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