Конструктор DataRow недоступен при написании расширения DataSet?
Я пытаюсь написать пару расширений для преобразования 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;
}
}
}
}
2 ответа
Неважно, находится ли он в методе расширения или любом другом методе. 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();
надеюсь это поможет...