不能从 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