这是我的代码:
MySqlDataReader msdr = mysqlquery.Reader("SELECT * FROM amount WHERE id=@id", "@id", i);
List<decimal> decimallist = new List<decimal>();
while (msdr.Read())
{
decimallist.Add(msdr.GetDecimal(1));
TbAmount.Text = string.Join(" ", decimallist.ToString());
}
因此,假定TbAMount获得2个值,但仅获得1个值。我在做什么错了?
答案 0 :(得分:1)
当列表完全填满后,您应该在循环后分配字符串。但是,这给出的结果与您总是在循环中覆盖它的结果相同,因此不是造成此问题的原因。
但是您在decimallist.ToString()
中使用String.Join
,它仅返回列表的类型名称。由于字符串实现了IEnumerable<char>
,因此可以编译,但肯定不是您想要的。
您应该使用:
while (msdr.Read())
{
decimallist.Add(msdr.GetDecimal(1));
}
TbAmount.Text = string.Join(" ", decimallist);
答案 1 :(得分:0)
每次迭代都会替换该值,因此请移至行外并循环以下。
TbAmount.Text = string.Join(" ", decimallist);