Megosztás a következőn keresztül:


Adathalmaz tartalmának másolása

Létrehozhat egy másolatot az DataSet adatokról, hogy az eredeti adatok befolyásolása nélkül működjön együtt, vagy az adathalmazból származó adatok egy részhalmazával működjön együtt. Adathalmaz másolásakor a következőt teheti:

  • Hozza létre az Adatkészlet pontos másolatát, beleértve a sémát, az adatokat, a sorállapot-információkat és a sorverziókat.

  • Hozzon létre egy adatkészletet , amely egy meglévő adathalmaz sémáját tartalmazza, de csak a módosított sorokat. Visszaadhatja az összes módosított sort, vagy megadhat egy adott DataRowState-t. A sorállapotokról további információt a Sorállapotok és a Sorverziók című témakörben talál.

  • Csak az Adathalmaz sémájának vagy relációs szerkezetének másolása sorok másolása nélkül. A sorok importálhatók egy meglévőbe DataTable a következő használatával ImportRow: .

A sémát és az adatokat is tartalmazó DataSet pontos másolatának létrehozásához használja az CopyAdathalmaz metódusát. Az alábbi példakód bemutatja, hogyan hozhat létre pontos másolatot az Adatkészletről.

Dim copyDataSet As DataSet = customerDataSet.Copy()  
DataSet copyDataSet = customerDataSet.Copy();  

Ha olyan adathalmaz másolatát szeretné létrehozni, amely sémát és csak a Hozzáadott, Módosított vagy Törölt sorokat képviselő adatokat tartalmazza, használja az GetChangesAdathalmaz metódusát. A GetChanges használatával csak a megadott sorállapotú sorokat is visszaadhatja, ha a GetChanges hívása során egy DataRowState-értéket ad vissza. Az alábbi példakód bemutatja, hogyan továbbíthat DataRowState-t a GetChanges hívása során.

' Copy all changes.  
Dim changeDataSet As DataSet = customerDataSet.GetChanges()  
' Copy only new rows.  
Dim addedDataSetAs DataSet = _  
    customerDataSet.GetChanges(DataRowState.Added)  
// Copy all changes.  
DataSet changeDataSet = customerDataSet.GetChanges();  
// Copy only new rows.  
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);  

Ha csak sémát tartalmazó adathalmaz másolatát szeretné létrehozni, használja az Clone Adathalmaz metódusát. Meglévő sorokat is hozzáadhat a klónozott adatkészlethez a DataTable ImportRow metódusával. Az ImportRow adatokat, sorállapotokat és sorverzióadatokat ad hozzá a megadott táblához. Az oszlopértékek csak akkor lesznek hozzáadva, ha az oszlop neve megegyezik, és az adattípus kompatibilis.

Az alábbi példakód egy Adathalmaz klónját hozza létre, majd hozzáadja az eredeti Adatkészlet sorait az Adathalmaz-klón Ügyfelek táblájába azon ügyfelek esetében, ahol a CountryRegion oszlop értéke "Germany".

Dim customerDataSet As New DataSet  
        customerDataSet.Tables.Add(New DataTable("Customers"))  
        customerDataSet.Tables("Customers").Columns.Add("Name", GetType(String))  
        customerDataSet.Tables("Customers").Columns.Add("CountryRegion", GetType(String))  
        customerDataSet.Tables("Customers").Rows.Add("Juan", "Spain")  
        customerDataSet.Tables("Customers").Rows.Add("Johann", "Germany")  
        customerDataSet.Tables("Customers").Rows.Add("John", "UK")  
  
Dim germanyCustomers As DataSet = customerDataSet.Clone()  
  
Dim copyRows() As DataRow = _  
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")  
  
Dim customerTable As DataTable = germanyCustomers.Tables("Customers")  
Dim copyRow As DataRow  
  
For Each copyRow In copyRows  
  customerTable.ImportRow(copyRow)  
Next  
DataSet customerDataSet = new DataSet();  
customerDataSet.Tables.Add(new DataTable("Customers"));  
customerDataSet.Tables["Customers"].Columns.Add("Name", typeof(string));  
customerDataSet.Tables["Customers"].Columns.Add("CountryRegion", typeof(string));  
customerDataSet.Tables["Customers"].Rows.Add("Juan", "Spain");  
customerDataSet.Tables["Customers"].Rows.Add("Johann", "Germany");  
customerDataSet.Tables["Customers"].Rows.Add("John", "UK");  
  
DataSet germanyCustomers = customerDataSet.Clone();  
  
DataRow[] copyRows =
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");  
  
DataTable customerTable = germanyCustomers.Tables["Customers"];  
  
foreach (DataRow copyRow in copyRows)  
  customerTable.ImportRow(copyRow);  

Lásd még