2017-06-19 69 views
1

试图输出所有的从MSSQL数据库中的列的内容到一个数组,此刻我正在此为输出:输出内容

ConsoleApplication3.Program+ClassName 
ConsoleApplication3.Program+ClassName 

如果我添加一列额外的行然后会有三个相同的输出。下面是处理所有这些的代码。

public class ClassName 
    { 
     public string Col1 { get; set; } 
    } 

    static void Main(string[] args) 
    { 
     try 
     { 
      SqlConnection con = new SqlConnection("Data Source=;Network Library=DBMSSOCN; Initial Catalog = Backups; User ID = BackupsU; Password = ; "); 
      ClassName[] allRecords = null; 
      string sql = @"SELECT company_Name FROM Company"; 
      using (var command = new SqlCommand(sql, con)) 
      { 
       con.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        var list = new List<ClassName>(); 
        while (reader.Read()) 
         list.Add(new ClassName { Col1 = reader.GetString(0) }); 
        allRecords = list.ToArray(); 

       } 

       foreach (var item in allRecords) 
       { 
        Console.WriteLine(item.ToString()); 
       } 

       Console.ReadKey(); 
       Console.WriteLine(); 
      } 

回答

3

你需要引用的每个实例Col1财产您ClassName

foreach (var item in allRecords) 
    { 
    Console.WriteLine(item.Col1); 
    } 

的不这样做,你只是调用Object.ToString()这除非被覆盖,只返回类的全名。

+0

工作完美,谢谢! – xjacksssss

1

您需要覆盖ClassName.ToString()以返回ClassName.Col1,或者只需在Console.Writeline语句中使用item.Col1即可。

由于.ToString没有被覆盖,它回落到Object.ToString(),它输出类名称。