我试图通过查询表格来绘制图表,并且表格列可以为空。查询运行正常,但将查询数组传递回图表数组会将错误"cannot implicitly convert from double?[]
引发加倍[]"。我在网上搜索没有成功。有什么建议吗?
//code in the windows form
private void cmdCHART_Click(object sender, EventArgs e)
{
nmCHART.clsCHART oCHART = new nmCHART.clsCHART();
double[] Y = new double[21];
Y = oCHART.GET_Y_SERIES("CONDOR"); //can't cast double?[] to double[]
}
//get data
public double?[] GET_Y_SERIES(string GREEK)
{
var qryY = (from P in Globals.DATA.PAYOFF_EAVs
where P.GREEK == GREEK
orderby P.DP_NO
select P.DATA).ToArray();
return qryY;
}
答案 0 :(得分:2)
使用Cast
将其转换为双倍。
Y = oCHART.GET_Y_SERIES("CONDOR").Cast<double>().ToArray();
要避免转化中的null
值,请使用此功能。
Y = oCHART.GET_Y_SERIES("CONDOR").Where(d=>d.HasValue).Cast<double>().ToArray();
工作example
答案 1 :(得分:0)
因为您正在使用可空类型,所以您需要从中获取实际的“值”。你可以这样做:
var data = new List<double>();
foreach (var datum in oCHART.GET_Y_SERIES("CONDOR"))
{
if (datum.HasValue)
{
data.Add(datum.Value);
}
}
var y = data.ToArray();