2013-04-22 12 views
6

UniDataSetsUniRecordsDataSetDataRowに変換するためのいくつかの拡張機能を作成しようとしていますが、コンパイルしようとすると次のエラーが発生します。DataSetエクステンションを書き込むときにDataRowコンストラクタにアクセスできませんか?

「System.Data.DataRow.DataRow(System.Data.DataRowBuilder)」は

は、この問題を解決する方法はありますか私は、このアプローチを放棄し、来る必要があり、その保護レベルにアクセスできないそれは別の方法ですか?

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Data; 
    using IBMU2.UODOTNET; 

    namespace Extentions 
    { 
     public static class UniDataExtentions 
     { 
      public static System.Data.DataSet ImportUniDataSet(this System.Data.DataSet dataSet, IBMU2.UODOTNET.UniDataSet uniDataSet) 
      { 
       foreach (UniRecord uniRecord in uniDataSet) 
       { 
        DataRow dataRow = new DataRow(); 
        dataRow.ImportUniRecord(uniRecord); 
        dataSet.Tables[0].ImportRow(dataRow); 
       } 

       return dataSet; 
      } 

      public static void ImportUniRecord(this System.Data.DataRow dataRow, IBMU2.UODOTNET.UniRecord uniRecord) 
      { 
       int fieldCount = uniRecord.Record.Dcount(); 

       // ADD COLUMS 
       dataRow.Table.Columns.AddRange(new DataColumn[fieldCount]); 

       // ADD ROW 
       for (int x = 1; x < fieldCount; x++) 
       { 
        string stringValue = uniRecord.Record.Extract(x).StringValue; 
        dataRow[x] = stringValue; 
       } 
      } 
     } 
    } 
+0

...これが役に立てば幸いこのコードのどこにでもそのコンストラクタを使用しようとしていますか?エラーはどの行で発生していますか? –

+0

行17:DataRow dataRow =新しいDataRow(); – josh

答えて

18

拡張メソッドかどうかは関係ありません。 DataRowコンストラクタには、一般にアクセスできません。新しいDataRowを作成するには、DataTable.NewRow()メソッドを使用する必要があります。

データテーブルのスキーマ情報を使用して、一致する行を作成します。独自のコンストラクタを使用しようとしたばかりの場合、オブジェクトはどのスキーマを使用すべきか分かりません。

0

しかし私はそれが複数の行のためのものであり、ならびに単一の行に適用することができ、簡単な方法を試してみました:

//Declare a variable for multiple rows 
DataRow[] rows = null; 

//get some data in a DataTable named table 

//Select specific data from DataTable named table 
rows = table.Select("column = 'ColumnValue'"); 

//Read the value in a variable from the row 
string ColumnValue = rows[0]["column"].ToString(); 

は、私がどこ見ない

関連する問題