2017-07-01 4 views
1

Ich habe zwei DataSets mit identischen Tabellen.Wie lade ich eine DataTable mit berechneter Spalte?

DataSet1

enter image description here

Datensatz2

enter image description here

"Fullname" Spalte der beiden Tabellen Set Ausdruck Eigenschaft als

[Grade]+'-'+[Class] 

Für Datensatz2 habe ich eine mir definiert thod - "Import".

// DataSet2.cs file 

namespace ConsoleApplication1 
{ 
    public partial class DataSet2 
    { 
     public void Import(DataSet1 dataSet1) 
     { 
      this.Group.Load(dataSet1.Group.CreateDataReader()); 
     } 
    } 
} 

Die letzte Zeile von Code (dataSet2.Import(dataSet1);) wirft InvalidOperationException.

using System; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DataSet1 dataSet1 = new DataSet1(); 
      dataSet1.Group.AddGroupRow(1, "A"); 
      dataSet1.Group.AddGroupRow(1, "B"); 

      DataSet2 dataSet2 = new DataSet2(); 
      dataSet2.Import(dataSet1); 
     } 
    } 
} 

Das ist, weil Spalte "FullName" Spalte berechnet wird. Ich würde gerne wissen, wie diese Ausnahme in dieser besonderen Situation umgehen? Ist es möglich, dass der DataReader berechnete Spalten beim Laden überspringt? Oder vielleicht gibt es noch andere "Tricks"?.

Dies ist eine Reproduktion eines Problems in einem meiner Projekte mit DataSets, mit mehreren Tabellen in ihnen.

Antwort

0

müssen Sie Importfunktion modifizieren, wie

public void Import(DataSet1 dataSet1) 
     { 
      //this.Group.Load(dataSet1.Group.CreateDataReader()); 
      foreach(var group in dataSet1.Group) 
      { 
       GroupRow g =this.Group.NewGroupRow(); 
       g.Class = group.Class; 
       g.Grade = group.Grade; 
       this.Group.AddGroupRow(g); 
      } 
     } 

folgenden weil Ladefunktion alle Spalten importieren verwendet und kann nicht verwendet werden, wenn Sie Spalte berechnet haben.

Verwandte Themen