2013-02-11 62 views
1

即时通讯相当新,并且对Linq有一些问题,我认为灵动会非常简单。想要从数据库中检索数组

我有一个数据库中的表与以下变量;

名称 - 字符串

价值 - 浮动

时间 - 日期时间

现在我想打一个特定的名称为两个阵列,包含一个价值观,另一个时间,以便它会很容易绘制。我已经做了一个控制器,我已经设法访问数据库并使用此代码获取具体名称;

 var Names = db.Graphs 
         .Where(r => r.Name.Contains(Name) || 
            string.IsNullOrEmpty(Name)) 
         .Take(10) 

但即时通讯完全停留在如何通过数据库进行传输,获取两个数组并将其发送到视图,其中有我的Highchart图。

Javascript;

series: [{ 
      name: 'NameOn', 
      data: [23.3, 18.3, 13.9, 9.6] <--- Where i want to insert my data 
     }] 

有关如何检索数据的任何想法?

+0

这个建议不是关于你的问题,但是,你可以使用[dotNetHighcharts](http://dotnethighcharts.codeplex.com) – 2013-02-11 12:35:34

+0

这似乎是一个很好的实现,但我仍然需要从数据库中检索值。 – Tim 2013-02-11 13:39:39

+0

如果你想使用DotnetHighCharts,我会给你一个示例数据格式。 (姓名,值,日期) – 2013-02-11 13:45:56

回答

2

对于irregularTimeChart数据格式是这样以下

public static Series GetIrregularTimeChartData() 
{ 
    List<Series> Series = new List<Series>(); 

    // get data from db and convert it to chart data (name, value, date) 
    var chartSeries = db.Graphs.GroupBy(x => new { x.Name }) 
         .Select(g => new 
         { 
          Name = g.Key, 
          Data = g.Select(x => x.Value).ToArray(), 
          Date = g.Select(x => x.Date).ToArray() 
         }).ToArray(); 

    // create 2D array => [value, date] 
    foreach (var item in chartSeries) 
    { 
     int lenght = item.Data.Count(); 
     object[,] data = new object[lenght, 2]; 
     for (int i = 0; i < lenght; i++) 
     { 
      data[i, 0] = item.Date[i]; 
      data[i, 1] = item.Data[i]; 
     } 
     Series localSeries = new Series { Name = item.Name, Data = new Data(data) }; 
     Series.Add(localSeries); 
    } 

    return Series; 
} 

集该数据以图表数据源。您可以使用examples in this page获取更多信息。

+0

感谢您的回复! :)我得到; LINQ to Entities不识别方法'Int32 [] ToArray [Int32](System.Collections.Generic.IEnumerable'1 [System.Int32])''方法,并且此方法不能转换为存储表达式。试图获得图表系列。 – Tim 2013-02-11 14:20:56

+0

首先获取'var list = db.Graphs.ToList()',获取列表后,对其进行分组。 'var groupped = list.group ...' – 2013-02-11 14:24:34

+0

我用下面的代码解决了它:.Select(x => x.Temp).OrderBy(x => x).ToArray(); 非常感谢您的帮助AliRiza – Tim 2013-02-11 14:26:14