Запись строки из таблицы в другую таблицу

alya_6

Client
Регистрация
27.08.2018
Сообщения
172
Благодарностей
19
Баллы
18
Здравствуйте! Нужна помощь в следующей ситуации:
Есть таблица 1 с N кол-вом строк. По определенному критерию я нахожу нужные мне строки в таблице 1 и хочу записать все значения (ячейки) нужных строк в новую таблицу 2.

Ничего лучшего, кроме записи каждой ячейки нужной строки в соответствующую переменную и вставки этих переменных в ячейки в новой таблице придумать не могу. Подскажите пожалуйста, может есть более быстро и оптимально реализуемые решения?
 

frion-seo

Client
Регистрация
27.02.2011
Сообщения
506
Благодарностей
451
Баллы
63
Вот пользуйтесь
Код:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["tableSearchRegex"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["SourceTable"];
// получаем таблицу, в которую будем класть
var destTable = project.Tables["OutputTable"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем вторую ячейку регулярным выражением, если есть совпадение кладем результат во вторую таблицу
        if (parserRegex.IsMatch(cells[1]))
            destTable.AddRow(cells);
    }
}
 
  • Спасибо
Реакции: Devostator

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
8
вопрос в догонку, а если нужно из 1 таблицу в другую перенести первый N строк?
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
185
Баллы
43
Вот пользуйтесь
Код:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["tableSearchRegex"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["SourceTable"];
// получаем таблицу, в которую будем класть
var destTable = project.Tables["OutputTable"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем вторую ячейку регулярным выражением, если есть совпадение кладем результат во вторую таблицу
        if (parserRegex.IsMatch(cells[1]))
            destTable.AddRow(cells);
    }
}
Помогите доделать код, чтобы удалял из исходной таблицы только те строки, которые берутся во вторую таблицу. То есть на выходе должны остаться в исходной таблице те строки, которые по условиям не подошли и не были занесены во вторую таблицу.
Пробовал добавить такой вариант, но работает неправильно
C#:
if (parserRegex.IsMatch(cells[10]))
        destTable.AddRow(cells);
        sourceTable.DeleteRow(i); i--; //тут должно удалять взятую для 2-й таблицы строку)
P.S. вопрос решен, код немного нужно было доработать
 
Последнее редактирование:
  • Спасибо
Реакции: Nick

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