在 C# 中将 double?[ ] 转换为 object[ ]

Converting double?[ ] to object[ ] in c#

我在我的 C# 程序中使用 DotNet.Highcharts。系列项目的数据元素需要 object[]。我使用的数据来自 LINQ 方法,如下所示。下面的代码还将 double?[] 转换为 List<object>,然后转换为所需的 object[]

double?[] data = (from c in context.CTSeries
                 select c.CTDI).Take(1000).ToArray();

List<object> dataList = new List<object>();

foreach (double? ctdi in data)
{
    dataList.Add( Convert.ChangeType(ctdi, typeof(Object)));
}

object[] dataArray = dataList.ToArray();
return dataArray;

是否有 better/more 从 double?[] 获取 object[] 的有效方法?

您可以 Cast<object>() 而不是创建额外的中间数组:

 double?[] data = (from c in context.CTSeries
                     select c.CTDI).Take(1000)
     .Where(v => v.HasValue) // if needed
     .Cast<object>()
     .ToArray();

使用 LINQ 并将 double? 转换为 object

List<object> dataList = data.Select(d => (object)d).ToList();

或return一个数组

return data.Select(d=> (object)d).ToArray();
List<object> dataList = data.Select(d =>  d == null ? null : (object)d).ToList();