类型列表,将值添加到数据类型CLASS的List <>

sql*_*ild 0 .net c# list dynamic winforms

我正在从我的数据库表中检索4个字段.现在我想将它们添加到动态列表<>.如何将这些添加到列表中.我试过这个:

public class myclass
{
   public string StdDetails, StdAdderID;
   public DateTime StdAddedDate, StdAddedTime;
}

public void buttonClick()
{
    List<myclass> StdList = new List<myclass>();

    myclass mc = new myclass();

    OdbcCommand readStd = 
        new OdbcCommand("SELECT StdDetails, StdAddedDate," +
                        "StdAddedTime, StdAdderID" +
                        "FROM Students", Conn);

    OdbcDataReader readStdreader = 
        readStd.ExecuteReader(CommandBehavior.SingleRow);

    while (readStdreader .Read())
    {
        mc.StdDetails = readStdreader.GetString(0);
        mc.StdDetails = readStdreader.GetString(3); 
        mc.StdDetails = readStdreader.GetDate(1);
        mc.StdDetails = readStdreader.GetDateTime(2);
        StdList.Add(mc);
    }
    MessageBox.Show(StdList[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)

在消息框中,不显示该值?怎么做.请帮助

//为TYPOS服务:

替换这3行:

mc.StdDetails = readStdreader.GetString(3); 
        mc.StdDetails = readStdreader.GetDate(1);
        mc.StdDetails = readStdreader.GetDateTime(2);
Run Code Online (Sandbox Code Playgroud)

用:

mc.StdAddedDate= readStdreader.GetString(3); 
                mc.StdAdderID= readStdreader.GetDate(1);
                mc.StdAddedTime= readStdreader.GetDateTime(2);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

你只是建立一个单一实例myclass,所以你的名单将是全同一个对象的引用.你想要这个:

while (readStdreader.Read())
{
    myclass mc = new myclass();
    mc.StdDetails = readStdreader.GetString(0);
    mc.StdAdderID = readStdreader.GetString(3);
    mc.StdAddedDate= readStdreader.GetDate(1);
    mc.StdAddedTime = readStdreader.GetDateTime(2);
    StdList.Add(mc);
}
Run Code Online (Sandbox Code Playgroud)

请注意我如何更改已分配的属性 - 您发布的代码尝试StdDetails重复分配.

您还没有覆盖ToStringmyclass,所以通话ToString()是不会给你什么特别有用.

另外:

  • 您应该查看.NET命名约定; 你的命名现在遍布整个商店.(std这里的意思是什么?你几乎把它用于所有......)
  • 公共领域是一个非常糟糕的主意; 请改用属性
  • 使用using语句以可靠的方式关闭读者,命令,连接等.