如何填写对象列表?

时间:2013-02-26 13:38:39

标签: c# asp.net oop

我的代码上有一个“Kit”对象。

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>();

现在我想用db

中的数据填充工具包

我有一个解决方案:

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

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

kits.fillData();

3 个答案:

答案 0 :(得分: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);
      }
    }
  }
}

答案 1 :(得分: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();

答案 2 :(得分: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);
    }
}