2017-07-01 2 views
1

私は同じテーブルを持つ2つのデータセットを持っています。計算された列でDataTableを読み込むには?

DATASET1

enter image description here

DATASET2

enter image description here

両方のテーブルの "フルネーム" の欄には

DATASET2については
[Grade]+'-'+[Class] 

として設定表現プロパティを持って、私は私を定義していますthod - "インポート"。

// DataSet2.cs file 

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

最後のコード行(dataSet2.Import(dataSet1);)が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); 
     } 
    } 
} 

これは、「FullName」列が計算列であるためです。 この特定の状況でこの例外を回避する方法を知りたいですか?読み込み中に計算された列をスキップすることは可能ですか?それとも、他の "トリック"がありますか?

これは、私のプロジェクトの1つで、DataSetsで複数のテーブルを持つ問題を再現したものです。ロード機能は、すべての列をインポートするために使用され、あなたが列を計算している場合に使用することはできませんので

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); 
      } 
     } 

を以下のよう

答えて

0

は、インポート機能を変更する必要があります。

関連する問題