한 데이터 테이블을 다른 데이터 테이블에 추가하는 방법
하나의 데이터 테이블을 다른 데이터 테이블에 추가하고 싶습니다.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
'programing' 카테고리의 다른 글
엔티티 프레임워크를 사용한 LIKE 쿼리 (0) | 2023.05.16 |
---|---|
동기식 연결에 HttpClient를 사용하는 이유 (0) | 2023.05.16 |
YAML에서 빈 배열을 만들려면 어떻게 해야 합니까? (0) | 2023.05.16 |
앱을 성공적으로 제출한 후 "기호 파일이 너무 많습니다" (0) | 2023.05.16 |
Postgres에서 테이블에 여러 열을 추가하는 방법은 무엇입니까? (0) | 2023.05.16 |