6

我正在尝试编写几个扩展来转换UniDataSetsUniRecords转换DataSetDataRow但是当我尝试编译时出现以下错误。

'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;
                }
            }
        }
    }
4

2 回答 2

18

不管是在扩展方法中,还是在任何方法中。构造DataRow函数不可公开访问。您需要使用该DataTable.NewRow()方法创建一个新的DataRow.

它将使用数据表中的模式信息来创建与其匹配的行。如果您只是尝试自己使用构造函数,则对象将不知道应该使用什么模式。

于 2013-04-22T20:00:56.897 回答
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();

希望这可以帮助...

于 2014-01-24T17:24:10.330 回答