program tip

DataRow를 복사하거나 복제하는 C # 간단한 방법?

radiobox 2020. 8. 15. 09:01
반응형

DataRow를 복사하거나 복제하는 C # 간단한 방법?


DataRow의 복제본을 만드는 간단한 방법을 찾고 있습니다. 해당 행의 스냅 샷을 찍고 저장하는 것과 같습니다. 그러면 원본 Row의 값은 자유롭게 변경할 수 있지만 변경되지 않는 다른 저장된 사본이 있습니다. 이것이 올바른 방법입니까?

    DataRow Source, Destination;
    //Assume we create some columns and fill them with values
    Destination.ItemArray = Source.ItemArray;

이것은 Snapshot의 ItemArray 참조가 Source의 항목을 가리 키도록 설정합니까 아니면 실제로 별도의 복사본을 생성합니까? 대신 이것을해야합니까?

    Destination.ItemArray = Source.ItemArray.Clone();

편집 : 두 번째 코드 조각이 실제로 컴파일되지 않는다고 생각합니다.


ImportRow메서드사용 하여 동일한 스키마를 사용하여 DataTable에서 DataTable로 행을 복사 할 수 있습니다 .

var row = SourceTable.Rows[RowNum];
DestinationTable.ImportRow(row);

최신 정보:

새로운 편집을 통해 다음을 믿습니다.

var desRow = dataTable.NewRow();
var sourceRow = dataTable.Rows[rowNum];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];

작동 할 것이다


그러나 새 테이블에서 새 행에 액세스 할 수 있는지 확인하려면 테이블을 닫아야합니다.

DataTable destination = new DataTable(source.TableName);
destination = source.Clone();
DataRow sourceRow = source.Rows[0];
destination.ImportRow(sourceRow);

참고 URL : https://stackoverflow.com/questions/12025012/c-sharp-simple-way-to-copy-or-clone-a-datarow

반응형