1

我的代码上有一个对象“工具包”。

class Kit
{
    private int _CK_ID;

    public int CK_ID
    {
        get { return _CK_ID; }
        set { _CK_ID = value; }
    }

}

在我的代码中,我想填写一个 Kit 列表

List<Kit> kits = new List<Kit>();

现在我想用数据库中的数据填充工具包

我有一个解决方案:

将数据带到阅读器,然后循环并将新套件插入列表中。

但我想做“很好”我怎么能做这样的事情

kits.fillData();
4

3 回答 3

2

这取决于您希望如何构建代码以及您最熟悉的内容可以使用Entity FrameworkNHibernate 之类的东西。

这显然取决于您的框架、任务要求和技能组合。

如果这不是一个选项,您可以执行此操作,基于您的stored procedure或 select 语句带出与类相同的列名Kit

public class KitList : List<Kit>
{
  public void FillList()
  {
    using (SqlConnection con = new SqlConnection(""))
    {
      var cmd = new SqlCommand("GetData", con);
      var dt = new DataTable();
      var sda = new SqlDataAdapater(cmd);
      sda.Fill(dt);
      foreach(var row in dt.Rows)
      {
        Kit k = new Kit();
        foreach(var col in dt.Columns)
        {
          k.GetType().GetProperty(col.Name).SetValue(obj, row[col.Name], null);
        }
        this.Add(k);
      }
    }
  }
}
于 2013-02-26T13:46:32.773 回答
1

像这样创建一个扩展方法List<Kit>

public static void fillData(this List<Kit> kits) { }

然后在里面填充kits对象。现在,您需要将其放入一个static类中,并且您需要在要使用它的文件的顶部包含命名空间。所以,如果你有这样的代码:

namespace MyApplication.Extensions
{
    public static class MyExtensions
    {
        public static void fillData(this List<Kit> kits) { }
    }
}

然后在要使用它的文件中添加一条using语句:

using MyApplication.Extensions;

所以当你有一个List<Kit>你可以这样做:

List<Kit> kits = new List<Kit>();
kits.fillData();
于 2013-02-26T13:40:27.140 回答
1

为什么Kit物体会填充自己?

你可以实现类似的东西:

class KitCollection : List<Kit>
{
    public void FillData()
    {
        Random rnd = new Random();
        int i = 10; //let say 10 random data

        for (int j = 0; j < 10; j++)
        {
            Kit kit = new Kit();
            kit.CK_ID = rnd.Next(1, 100);
            this.Add(kit);
        }
    }
}

并像这样使用它:

    KitCollection list = new KitCollection(); // can be easily cast to List<Kit>
    list.FillData();

Random Data? 当然,在这种情况下,您当然可以使用简单的方法来填充它,例如

private static void FillRandomData(List<Kit> lst)
{
    Random rnd = new Random();
    int i = 10; //let say 10 random data

    for (int j = 0; j < 10; j++)
    {
        Kit kit = new Kit();
        kit.CK_ID = rnd.Next(1, 100);
        lst.Add(kit);
    }
}
于 2013-02-26T13:45:53.180 回答