pen*_*ake 5 c# datatable ado.net datarow extend
我想创建一个自定义的DataRow,它将具有-let的说法 - 一个名为IsCheapest的软件.
public class RateDataRow : DataRow
{
protected internal RateDataRow(DataRowBuilder builder) : base(builder)
{
}
public bool IsCheapest { get; set ;}
}
Run Code Online (Sandbox Code Playgroud)
我想要一个只包含***RateDataRow***的新DataTable,以便.NewDataRow()将RateDataRow实例作为新行返回.
什么应该是扩展DataTable的类的实现?
谢谢,
Gav*_*and 10
我知道这是一个旧帖子,但我无法得到上面的例子.我遇到了类似的问题,所以很想找到解决方案.经过一番研究后,我发现以下内容有效:
class Program
{
static void Main(string[] args)
{
MyDataTable t1 = new MyDataTable();
t1.Columns.Add(new DataColumn("Name", typeof(string)));
t1.Columns.Add(new DataColumn("DateOfBirth", typeof(DateTime)));
MyDataRow r1 = t1.NewRow() as MyDataRow;
r1["Name"] = "Bob";
r1["DateOfBirth"] = new DateTime(1970, 5, 12);
t1.Rows.Add(r1);
}
}
[Serializable]
public class MyDataTable : DataTable
{
public MyDataTable()
: base()
{
}
public MyDataTable(string tableName)
: base(tableName)
{
}
public MyDataTable(string tableName, string tableNamespace)
: base(tableName, tableNamespace)
{
}
/// <summary>
/// Needs using System.Runtime.Serialization;
/// </summary>
public MyDataTable(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
protected override Type GetRowType()
{
return typeof(MyDataRow);
}
protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
{
return new MyDataRow(builder);
}
}
[Serializable]
public class MyDataRow : DataRow
{
public bool MyPropertyThatIdicatesSomething { get; private set; }
public MyDataRow()
: base(null)
{
}
public MyDataRow(DataRowBuilder builder)
: base(builder)
{
}
}
Run Code Online (Sandbox Code Playgroud)
从您的问题来看,尚不清楚您是否熟悉类型化数据集。它们基本上就是您所要求的。
您可以使用内置向导创建基于 XSD 的类型化数据集(XSD 是从 Db 架构中提取的)。在 WinForms 项目中,选择“添加数据源”并按照以下步骤操作。
即使您不想使用该模型,您也可以从属性、部分类等代码中借用。
明智的做法是要么使用该模型,要么保持非常接近它。
| 归档时间: |
|
| 查看次数: |
9545 次 |
| 最近记录: |