2013-02-11 6 views
1

메신저 MVC에 매우 익숙하며 Linq에 약간의 문제가 있습니다. 저는 영혼이 매우 간단 할 것이라고 생각합니다.데이터베이스에서 배열을 다시 검색하고 싶습니다.

데이터베이스에 다음 변수가있는 테이블이 있습니다.

이름 - 문자열

값 - 플로트

시간 - 날짜 시간

지금은 두 배열, 하나는 시간이 것 때문에 값과 다른 하나를 포함에 특정 이름을 만들고 싶어 줄거리하기 쉽다. 나는 데이터베이스에 액세스하여이 코드로 특정 이름을 가져올 수있는 컨트롤러를 만들었습니다.

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

그러나, 데이터베이스를 통해 itterate 두 배열을 얻고 난 내 Highchart 플롯을보기로 전송하는 방법에 메신저 완전히 붙어.

자바 스크립트;

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

데이터 검색 방법에 대한 의견이 있으십니까? irregularTimeChart 데이터 형식

+0

이 제안은 귀하의 질문에 관한 것이 아니지만 [dotNetHighcharts] (http://dotnethighcharts.codeplex.com) –

+0

사용할 수 있습니다. 좋은 구현 인 것 같지만 여전히 데이터베이스에서 값을 검색해야합니다. – Tim

+0

DotnetHighCharts를 사용하려는 경우 예제 데이터 형식을 제공 할 것입니다. (이름, 값, 날짜) –

답변

2

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가 'Int32 [] ToArray [Int32] (System.Collections.Generic.IEnumerable'1 [System.Int32])'메서드를 인식하지 못하고이 메서드를 저장소 표현식으로 변환 할 수 없습니다 . chartseries를 얻는 것을 시도에. – Tim

+0

먼저'var list = db.Graphs.ToList()'를 얻고 목록을 얻은 후에 그룹화하십시오. 'var groupped = list.group ...' –

+0

이 코드로 해결했습니다 : .Select (x => x.Temp) .OrderBy (x => x) .ToArray(); 도움말 AliRiza – Tim

관련 문제