【问题标题】:Want to retrieve Array from database想从数据库中检索数组
【发布时间】:2013-02-11 12:28:55
【问题描述】:

我对 MVC 很陌生,并且对 Linq 有一些问题,我认为解决方案会很简单。

我在数据库中有一个包含以下变量的表;

名称 - 字符串

值 - 浮动

时间-日期时间

现在我想将一个特定的名称放入两个数组中,一个包含值,另一个包含时间,这样很容易绘制。我已经制作了一个控制器,我可以在其中设法访问数据库并使用此代码获取特定名称;

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

但我完全坚持如何遍历数据库,获取两个数组并将其发送到我有我的 Highchart-plot 的视图。

Javascript;

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

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

【问题讨论】:

  • 此建议与您的问题无关,但您可以使用dotNetHighcharts
  • 这似乎是一个不错的实现,但我仍然需要从数据库中检索值。
  • 如果你想使用 DotnetHighCharts 我会给你一个示例数据格式。 (名称、值、日期)

标签: c# asp.net-mvc linq highcharts


【解决方案1】:

对于不规则时间图的数据格式如下

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 了解更多信息。

【讨论】:

  • 感谢您的回复! :) 我明白了;LINQ to Entities 无法识别方法 'Int32[] ToArray[Int32](System.Collections.Generic.IEnumerable`1[System.Int32])' 方法,并且此方法无法转换为存储表达式.正在尝试获取图表。
  • 先获取var list = db.Graphs.ToList(),获取列表后,再进行分组。 var groupped = list.group...
  • 我用这段代码解决了这个问题: .Select(x => x.Temp).OrderBy(x => x).ToArray();非常感谢 AliRiza 的帮助
  • 不客气。很高兴有帮助。
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
相关资源
最近更新 更多