2015-04-28 252 views
0

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

是否有从double?[]得到object[]更好/更有效的方式?

回答

5

使用LINQ和投double?object

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

或返回数组

return data.Select(d=> (object)d).ToArray(); 
5

你可以只Cast<object>(),而不是创建额外的中间阵列:

double?[] data = (from c in context.CTSeries 
        select c.CTDI).Take(1000) 
    .Where(v => v.HasValue) // if needed 
    .Cast<object>() 
    .ToArray(); 
1
List<object> dataList = data.Select(d => d == null ? null : (object)d).ToList(); 
相关问题