不能从 double?[] 隐式转换为 double[]
cannot implicitly convert from double?[] to double[]
我正在尝试通过查询 table 数据来绘制图表,并且 table 列可以为空。查询运行正常,但是将查询数组传回图表数组会引发错误 "cannot implicitly convert from double?[]
到 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;
}
因为您使用的是可空类型,所以您需要从中获取实际的 'value'。你可以这样做:
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();
使用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
我正在尝试通过查询 table 数据来绘制图表,并且 table 列可以为空。查询运行正常,但是将查询数组传回图表数组会引发错误 "cannot implicitly convert from double?[]
到 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;
}
因为您使用的是可空类型,所以您需要从中获取实际的 'value'。你可以这样做:
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();
使用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