写入数据集扩展时无法访问DataRow构造函数
本文关键字:访问 DataRow 构造函数 数据集 扩展 | 更新日期: 2023-09-27 18:10:36
我正试图编写几个扩展将UniDataSets
和UniRecords
转换为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;
}
}
}
}
不管它是在一个扩展方法中,还是在任何方法中。DataRow
构造函数不能公开访问。您需要使用DataTable.NewRow()
方法来创建新的DataRow
。
它将使用数据表中的模式信息来创建与之匹配的行。如果你只是尝试自己使用构造函数,对象将不知道应该使用哪种模式。
我尝试了一种更简单的方法,但是它适用于多行,也可以应用于单行:
//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();