2013-02-11 4 views
1

im довольно новый для MVC и есть некоторые проблемы с Linq, я думаю, что soulotion будет довольно простым.Хотите получить массив из базы данных

У меня есть таблица в базе данных со следующими переменными;

Имя - строка

Значение - поплавок

Time- Datetime

Теперь я хочу сделать конкретное имя в два массива, один, содержащий значения и другую времени, поэтому он будет быть легким в заговоре. Я создал контроллер, где мне удалось получить доступ к базе данных и получить конкретное имя с помощью этого кода;

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

Но им полностью застрял на том, как itterate через базу данных, получить два массива и отправить его на View, где у меня есть мой 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) –

+0

Кажется, что это хорошая реализация, но мне все равно придется извлекать значение из базы данных. – Tim

+0

Если вы хотите использовать DotnetHighCharts, я дам вам пример формата данных. (Имя, значение, дата) –

ответ

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

+0

Сначала получите 'var list = db.Graphs.ToList()' и после получения списка, затем сгруппируйте его. 'var groupped = list.group ...' –

+0

Я решил его с помощью этого кода: .Выберите (x => x.Temp) .OrderBy (x => x) .ToArray(); большое спасибо за помощь AliRiza – Tim

Смежные вопросы