不能隐式地从double转换[?]到double []

时间:2016-03-17 04:35:33

标签: c# linq casting nullable

我试图通过查询表格来绘制图表,并且表格列可以为空。查询运行正常,但将查询数组传递回图表数组会将错误"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;
        }

2 个答案:

答案 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();