Невозможно преобразовать объект в строку c #? - PullRequest
1 голос
/ 24 ноября 2011

Я пытаюсь извлечь значения из AraryList, но все, что я продолжаю получать, это System.Object[] ...

protected void Page_Load(object sender, EventArgs e)
{
    ReadDb readClass = new ReadDb();
    ArrayList list = new ArrayList();
    list = readClass.ReadFromDb();

    string s = list[4].ToString();
    Response.Write(s);     
}

РЕДАКТИРОВАТЬ:

public class ReadDb
{
    List<string> rowList = new List<string>();

    public List<string> ReadFromDb()
    {
        Database db = new Database(); 

        try
        {
            using(SqlConnection con = new SqlConnection(db.ConnectionString))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT * FROM Blog", con);
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                   object[] values = new object[reader.FieldCount];
                   reader.GetValues(values);
                   rowList.Add(values.ToString());
                }
                con.Close(); 
            }           
        }
        catch//(SqlException e)
        {
        }
        return rowList;
    }
}

enter image description here

Есть идеи?

Ответы [ 2 ]

10 голосов
/ 24 ноября 2011

Не используйте ArrayList, используйте Array<string>.В .NET до 2.0 не было обобщений и способов создания безопасных коллекций типов.ArrayList - это одна из тех оригинальных коллекций из .NET 1.X раз.

При написании нового кода всегда используйте типовые безопасные универсальные коллекции.Array<string> (в краткой форме, записанной как string[]) - такой тип.

Edit

Проблема в этом разделе кода:

object[] values = new object[reader.FieldCount];
reader.GetValues(values);
rowList.Add(values.ToString());

values это массив объектов.Метод ToString() для object[] не возвращает содержимое объектов в массиве, он просто возвращает имя типа.Вы должны изменить вызов на values.ToString() во что-то, что форматирует значения найденной строки в строку.Например:

rowList.Add(string.Format("Name: {0}, Address: {1}", values[0], values[1]);
2 голосов
/ 24 ноября 2011

Вместо этого используйте List<string>: универсальный (безопасный для типов) контейнер динамического размера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...