我编写了以下内容,以尝试执行sql查询并将结果存储在Array中:
public static ArrayList DbQueryToArry()
{
string SqlCString = myConnString;
SqlConnection connection = null;
ArrayList valuesList = new ArrayList();
connection = new SqlConnection(SqlCString);
connection.Open();
SqlCommand command = new SqlCommand("Select CLIENTNO, ACCOUNT_Purpose from audit.ACCOUNTS_AUDIT", connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
valuesList.Add(Convert.ToInt32(reader[0].ToString()));
}
return valuesList;
}
但是运行以下
var myArray = DbQueryToArry();
Console.WriteLine(myArray.ToString());
不返回查询结果。
答案 0 :(得分:3)
您将需要通过string.Join
或类似的方式手动加入他们
连接指定数组的元素或a的成员 集合,在每个元素之间使用指定的分隔符或 成员。
Console.WriteLine(string.Join(",",myArray.ToArray()));
您的版本无法正常工作的原因是,Console.Writeline
对于不同类型的设备有很多重载,但是当找不到特定的分辨率匹配项时,它会退回到WriteLine(Object)
WriteLine(Object value)
的源代码如下(可以在here中找到)
public virtual void WriteLine(Object value) {
if (value==null) {
WriteLine();
}
else {
// Call WriteLine(value.ToString), not Write(Object), WriteLine().
// This makes calls to WriteLine(Object) atomic.
IFormattable f = value as IFormattable;
if (f != null)
WriteLine(f.ToString(null, FormatProvider));
else
WriteLine(value.ToString());
}
}
注意它如何调用value.ToString()
吗?
返回代表当前对象的字符串。
备注
Object.ToString是.NET Framework中的主要格式化方法。 它将对象转换为其字符串表示形式,以便 适合展示。
ArrayList
没有ToString()的重载,它可以预期您要显示的内容,因此它依赖于默认值。
The default Object.ToString() method
ToString方法的默认实现返回完整的 对象类型的限定名称
这将使我讲到下一个要点,不要使用ArrayList
,使用通用数组int[]
或List<int>
,您会发现它更加有趣和有意义( 100级)