데이터 테이블의 열만 다른 데이터 테이블로 복사하려면 어떻게 해야 합니까?
데이터 테이블의 열만 다른 데이터 테이블로 복사하려면 어떻게 해야 합니까?
DataTable.Clone()
그 묘기를 부려야 합니다.
DataTable newTable = originalTable.Clone();
열만 필요한 경우DataTable.Clone()
사용할 수 있습니다.와 함께Clone
함수는 스키마만 복사됩니다.그렇지만DataTable.Copy()
구조와 데이터를 모두 복사합니다.
예.
DataTable dt = new DataTable();
dt.Columns.Add("Column Name");
dt.Rows.Add("Column Data");
DataTable dt1 = dt.Clone();
DataTable dt2 = dt.Copy();
dt1
하나의 열만 가질 것이지만dt2
행이 하나인 열이 하나 있습니다.
Datatable.Clone
큰 테이블의 경우 속도가 느립니다.현재 사용 중인 항목:
Dim target As DataTable =
New DataView(source, "1=2", Nothing, DataViewRowState.CurrentRows)
.ToTable()
원본 테이블의 구조만 복사하고 데이터는 복사하지 않습니다.
데이터가 없는 열 헤더가 있는 특정 데이터 테이블(dataTable1)의 구조를 다른 데이터 테이블(dataTable2)로 변경하려면 다음 코드를 따를 수 있습니다.
DataTable dataTable2 = dataTable1.Clone();
dataTable2.Clear();
이제 당신의 상태에 따라 데이터 표 2를 작성할 수 있습니다.:)
복사할 경우DataTable
다른 사람에게DataTable
다른Schema Structure
그러면 다음을 수행할 수 있습니다.
- 먼저 첫 번째 복제
DataType
구조물만 얻을 수 있도록 말입니다. - 그런 다음 필요에 따라 새로 생성된 구조를 변경한 다음 새로 생성된 데이터를 복사합니다.
DataTable
.
그래서:
Dim dt1 As New DataTable
dt1 = dtExcelData.Clone()
dt1.Columns(17).DataType = System.Type.GetType("System.Decimal")
dt1.Columns(26).DataType = System.Type.GetType("System.Decimal")
dt1.Columns(30).DataType = System.Type.GetType("System.Decimal")
dt1.Columns(35).DataType = System.Type.GetType("System.Decimal")
dt1.Columns(38).DataType = System.Type.GetType("System.Decimal")
dt1 = dtprevious.Copy()
그러므로 당신은 같은 것을 얻습니다.DataTable
하지만 구조를 수정했습니다.
그DataTable.Clone()
메서드는 완전히 새로운 DataTable을 만들 때 유용하지만 한 DataTable의 스키마 열을 다른 기존 DataTable에 추가하려는 경우가 있습니다.
예를 들어 DataTable에서 새 하위 클래스를 파생한 경우 스키마 정보를 가져오려면 Clone()을 사용할 수 없습니다.
예:
public class CoolNewTable : DataTable {
public void FillFromReader(DbDataReader reader) {
// We want to get the schema information (i.e. columns) from the
// DbDataReader and
// import it into *this* DataTable, NOT a new one.
DataTable schema = reader.GetSchemaTable();
//GetSchemaTable() returns a DataTable with the columns we want.
ImportSchema(this, schema); // <--- how do we do this?
}
}
스키마 테이블의 열을 템플릿으로 사용하여 기존 DataTable에 새 DataColumn을 생성하면 됩니다.
즉, ImportSchema의 코드는 다음과 같습니다.
void ImportSchema(DataTable dest, DataTable source) {
foreach(var c in source.Columns)
dest.Columns.Add(c);
}
또는 Linq를 사용하는 경우:
void ImportSchema(DataTable dest, DataTable source) {
var cols = source.Columns.Cast<DataColumn>().ToArray();
dest.Columns.AddRange(cols);
}
이는 완전히 새로운 DataTable을 만들기 위해 Clone()을 사용하지 않고 한 DataTable에서 다른 DataTable로 스키마/열을 복사하려는 상황의 한 예에 불과합니다.저는 다른 것들도 몇 번 만난 적이 있다고 확신합니다.
언급URL : https://stackoverflow.com/questions/2949858/how-to-copy-only-the-columns-in-a-datatable-to-another-datatable
'programing' 카테고리의 다른 글
404를 단일 페이지 앱으로 리디렉션하도록 스프링 부팅 구성 (0) | 2023.06.20 |
---|---|
몽구스에서 모든 것을 찾는 방법은? (0) | 2023.06.20 |
특정 입력에서 IE10의 "필드 지우기" X 버튼을 제거하시겠습니까? (0) | 2023.06.15 |
Eclipse에서 후행 공백을 자동으로 제거하는 방법은 무엇입니까? (0) | 2023.06.15 |
dSYM은 무엇이고 어떻게 사용합니까? (iOS SDK) (0) | 2023.06.15 |