从类项列表中填充DataSet

时间:2017-07-24 14:21:46

标签: c# dataset

我搜索了SO的常见问题,但它们与我的任务不符。 我有一个包含许多(约50个)ValueTyped属性的类。 并且需要使用类的属性填充new DataSet对象。

例如,如果我有这个:

public partial class MyClass
{
    public int Id {get; set;}
    public string Name {get; set;}
    // and other public properties
}

我需要两个函数来返回

  1. 为单个MyClass项目填充DataSet,其中包含一行。

  2. 为多个MyClass项目填充多个行的DataSet。

  3. public partial class MyClass
    {
        public DataSet GenerateDataSet(MyClass source);
    
        public DataSet GenerateDataSet(IEnumerable<MyClass> source);
    }
    

    我尝试了很多像下面这样的解决方案,但由于DataRow没有公共构造函数,因此无法编译。

    var ds = new DataSet();
    ds.Tables.Add(new DataTable("DataTableName"));
    var table = ds.Tables[0];
    table.Rows.Add(new DataRow(new DataRowBuilder(table, 0)));
    

1 个答案:

答案 0 :(得分:2)

public partial class MyClass
{
    public DataSet GenerateDataSet(MyClass source)
    {
        return GenerateDataSet(new[] { source });
    }

    public DataSet GenerateDataSet(IEnumerable<MyClass> source)
    {
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        ds.Tables.Add(dt);
        dt.Columns.Add("Name");
        dt.Columns.Add("Id", typeof(int));
        // other columns...
        foreach (MyClass c in source)
        {
            DataRow dr = dt.Rows.Add();
            dr.SetField("Name", c.Name);
            dr.SetField("Id", c.Id);
            // other properties
        }
        return ds;
    }
}