Как скопировать значения из одной таблицы SQL Server в столбцы с одинаковыми именами в другой с помощью LINQ - PullRequest
0 голосов
/ 17 января 2012

Иногда в SQL Server у нас есть временная таблица импорта («Импорт») с большим количеством столбцов, а другая таблица («Производство») также с большим количеством столбцов, а многие столбцы имеют одинаковые имена (но не все), и нам просто нужно записать значения столбцов с одинаковыми именами из одного в другой (без их обработки).Одна и та же база данных, столбцы с одинаковыми именами в обеих таблицах имеют одинаковые типы.

Обычно мы делаем это так:

// Lots and lots of columns copied without processing
Production.ColumnA = Import.ColumnA; 
Production.ColumnB = Import.ColumnB;
Production.ColumnC = Import.ColumnC;
// [...]

// Some with processing
Production.ColumnQ1 = DoSomething(Import.ColumnQ2); 

Это раздражает и как-то излишне, если имеется много столбцов.Как лучше всего автоматически скопировать эти столбцы с одинаковыми именами, как в этом псевдокоде :

foreach(var importRow in ImportRows)
    foreach(Column col in Production.Columns)
        if(Import.Columns.Contains(col.Name)) newProductionRow[col] = importRow[col];

(Очень похоже на то, что можно сделать, используя DataTables с индексами, номы не хотим этого здесь.)

1 Ответ

2 голосов
/ 17 января 2012

Вы можете попробовать использовать отражение для копирования из одного объекта в другой, как описано в этом блоге: http://goneale.com/2009/02/16/cloning-object-properties-via-reflection/

Если у вас есть множество таблиц разных типов, которые вам нужно скопировать, вы можете добавить в микс дженерики, поэтому вам нужно создать только одну функцию «копирования».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...