programing

한 데이터 테이블을 다른 데이터 테이블에 추가하는 방법

i4 2023. 5. 16. 22:10
반응형

한 데이터 테이블을 다른 데이터 테이블에 추가하는 방법

하나의 데이터 테이블을 다른 데이터 테이블에 추가하고 싶습니다.DataTable 클래스에는 "Load(IDataReader)"와 "Merge(DataTable)"의 두 가지 방법이 있습니다.문서에서 행이 있는 경우 두 행 모두 수신 데이터를 기존 DataTable과 '통합'하는 것으로 나타납니다.데이터 액세스 계층에서 병합을 수행합니다.

제가 좀...IDataReader로드 방법을 사용하여 데이터 테이블을 병합합니다.또는 데이터 세트를 로드할 수 있습니다.IDataReader데이터 집합에서 데이터 테이블을 가져온 다음 병합 방법을 사용하여 데이터 테이블을 병합합니다.

저는 누가 어떤 방법을 사용하는 것이 적절한지 알려주실 수 있나요?

또는 이 작업을 수행하는 방법에 대해 다른 제안이 있으면 알려주시기 바랍니다.

동일한 열 이름의 데이터 유형은 같아야 합니다.

dataTable1.Merge(dataTable2);

그 후의 결과는 다음과 같습니다.

dataTable1 = dataTable1 + dataTable2

병합은 데이터 테이블을 사용하고 로드에는 IDataReader가 필요하므로 데이터 계층에서 액세스할 수 있는 항목에 따라 필요한 방법을 사용합니다.제가 알기로는 Load가 내부적으로 Merge를 호출할 것으로 알고 있지만 100% 확신할 수는 없습니다.

두 개의 데이터 테이블이 있는 경우 병합을 사용합니다.

당신은 할 수 있습니다.DataAdapter일을 보다 DataAdapter.Fill(DataTable)의 기존 행에 새 행을 추가합니다.DataTable.

데이터 테이블을 포함하는 두 개의 데이터 세트를 추가합니다. 이제 필요에 따라 병합됩니다.

DataSet ds1 = new DataSet();
DataSet ds2 = new DataSet();

DataTable dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("Column1", typeof(System.String)));

DataRow newSelRow1 = dt1.NewRow();
newSelRow1["Column1"] = "Select";
dt1.Rows.Add(newSelRow1);

DataTable dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("Column1", typeof(System.String)));

DataRow newSelRow2 = dt1.NewRow();
newSelRow2["Column1"] = "DataRow1Data";  // Data
dt2.Rows.Add(newSelRow2);

ds1.Tables.Add(dt1);
ds2.Tables.Add(dt2);

ds1.Tables[0].Merge(ds2.Tables[0]);

이제 ds1에 병합된 데이터가 있습니다.

임의로 많은 테이블을 깔끔하게 처리하는 솔루션을 고려합니다.

//ASSUMPTION: All tables must have the same columns
var tables = new List<DataTable>();
tables.Add(oneTableToRuleThemAll);
tables.Add(oneTableToFindThem);
tables.Add(oneTableToBringThemAll);
tables.Add(andInTheDarknessBindThem);
//Or in the real world, you might be getting a collection of tables from some abstracted data source.

//behold, a table too great and terrible to imagine
var theOneTable = tables.SelectMany(dt => dt.AsEnumerable()).CopyToDataTable();

향후 재사용을 위해 도우미에 캡슐화:

public static DataTable CombineDataTables(params DataTable[] args)
{
    return args.SelectMany(dt => dt.AsEnumerable()).CopyToDataTable();
}

코드로 선언된 테이블을 몇 개만 가지고 계십니까?

var combined = CombineDataTables(dt1,dt2,dt3);

새 테이블을 만드는 대신 기존 테이블 중 하나로 결합하시겠습니까?

dt1 = CombineDataTables(dt1,dt2,dt3);

테이블 컬렉션을 하나씩 선언하는 대신 이미 가지고 계십니까?

//Pretend variable tables already exists
var tables = new[] { dt1, dt2, dt3 };
var combined = CombineDataTables(tables);

루프를 사용합니다.

  for (int i = 0; i < dt1.Rows.Count; i++)
        {      
           dt2.Rows.Add(dt1.Rows[i][0], dt1.Rows[i][1], ...);//you have to insert all Columns...
        }

언급URL : https://stackoverflow.com/questions/858401/how-to-append-one-datatable-to-another-datatable

반응형