C# SQL 记录从 table 到列表

C# SQL records from table to list

我正在尝试从 table 获取所有记录并在控制台中打印出来。

我的Userlist.cs

public List<Userlist> CreateList()
{
    using (SqlConnection conn = new SqlConnection(Sqlstring))
    {
        using (SqlCommand cmd = new SqlCommand(ListCreateQuery, conn))
        {
            conn.Open();

            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                List<Userlist> Users = new List<Userlist>();

                while (reader.Read())
                {
                    Userlist U = new Userlist();
                    U.fornavn = (string)reader["Fornavn"];
                    U.efternavn = (string)reader["Efternavn"];
                    U.mail = (string)reader["Mail"];
                    U.tlfnr = (string)reader["TlfNr"];

                    Users.Add(U);
                }

                return Users;
            }
        }              
    }
}

然后我尝试从我的 main 打印出来(或者一个方法很好)

if (UserAnswer == "1")
{
    Console.Clear();

    Userlist UL = new Userlist();

    foreach (Userlist user in UL.CreateList())
    {
        Console.WriteLine(user);
    }

    Console.ReadKey();
}

当我运行它时,它只打印mynamespace.userlist 3次(我的记录数)

您正在对象上使用 toString,因此它会打印对象名称

您需要在每个 属性 上使用它并写入:

            foreach(Userlist user in UL.CreateList())
            {
                Console.WriteLine(user.fornavn);
                Console.WriteLine(user.efternavn );
                Console.WriteLine(user.mail);
                Console.WriteLine(user.tlfnr);
            }

如果对象不是 null,将 class 对象传递到 Console.WriteLine 将调用它的 .ToString() 方法。如果您希望在调用 .ToString() 时显示 属性 值,您可以 override 您的 class:

中的方法
public class Userlist
{
    .....

    public override string ToString()
    {
        return "fornavn: " + fornavn + " efternavn: " + efternavn + " mail: " + mail 
                       + " tlfnr: " + tlfnr;
    }
}