woo*_*gie 2 c# asp.net visual-studio-2010
我有一个查询结果如下
Blue
OrangeRed
Black
Green
Silver
Red
Run Code Online (Sandbox Code Playgroud)
我打算从这个结果集中列出System.Drawing.Color对象.当我运行程序时,我得到了InvalidCastException.所有这些颜色肯定都在Color的枚举中.为什么我得到这个例外?
private List<System.Drawing.Color> BuildColorList()
{
List<System.Drawing.Color>ColorList = new List<System.Drawing.Color>();
using (SqlConnection con = new SqlConnection(cs))
{
using (SqlCommand cmd = new SqlCommand("select color from Colors", con))
{
con.Open();
cmd.CommandType = CommandType.Text;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
System.Drawing.Color color = (System.Drawing.Color)rdr["color"];
ColorList.Add(color);
}
}
return ColorList;
}
}
Run Code Online (Sandbox Code Playgroud)
你不能做一个强制转换:查询返回一个System.String
对象,不能直接强制转换为对象System.Drawing.Color
.相反,您需要使用Color.FromName(string)
方法:
private List<System.Drawing.Color> BuildColorList()
{
List<System.Drawing.Color>ColorList = new List<System.Drawing.Color>();
using (SqlConnection con = new SqlConnection(cs))
{
using (SqlCommand cmd = new SqlCommand("select color from Colors", con))
{
con.Open();
cmd.CommandType = CommandType.Text;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
System.Drawing.Color color = System.Drawing.Color.FromName((string)rdr["color"]);
ColorList.Add(color);
}
}
return ColorList;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
155 次 |
最近记录: |