2015-08-15 2 views
3

Я очень новичок в C# и MVC и Im, создавая веб-приложение. Я пытаюсь создать линейный график, используя DotNet High Chart, который будет заполняться с использованием данных из моей базы данных. У меня проблема с преобразованием DateTime в строку. Мой контроллер графика:Система не поддерживается при преобразовании DateTime - DotNetHighChart

var dataLeft = (from d in db.Appointments 
         select new 
         { 
          Date = d.Date.ToString("yyyyMMdd"), 
          IOPLeft = d.IOPLeft, 
         }).ToList(); 

     var xSeries = dataLeft.Select(a => a.Date).ToArray(); 
     var ySeries = dataLeft.Select(a => a.IOPLeft).ToArray(); 
// instantiate an object of the high charts type 
     var chart = new Highcharts("chart") 
      // define the type of chart 
       .InitChart(new Chart { DefaultSeriesType = ChartTypes.Line }) 
      //overall title of the chart 
       .SetTitle(new Title { Text = "Left IOP" }) 
      //small label below the main title 
       .SetSubtitle(new Subtitle { Text = "LeftIOP" }) 
      // load the x values 
       .SetXAxis(new XAxis { Categories = xSeries }) 
      // set the y title 
       .SetYAxis(new YAxis { Title = new YAxisTitle { Text = "IOP" } }) 
        .SetTooltip(new Tooltip 
        { 
         Enabled = true, 
         Formatter = @"function() { return '<b>'+this.series.name +'</b><br/>'+this.x+': '+this.y;}" 
        }) 
         .SetPlotOptions(new PlotOptions 
         { 
          Line = new PlotOptionsLine 
          { 
           DataLabels = new PlotOptionsLineDataLabels 
           { 
            Enabled = true 
           }, 
           EnableMouseTracking = false 
          } 
         }) 
      //load y values 
.SetSeries(new[] 
    { 
    new Series {Name = "Patient", 
     Data = new Data(new object[] {ySeries})}, 

}); 


     return View(chart); 
    } 
} 
} 

Моя модель:

[Display(Name = "Date")] 
    [DataType(DataType.Date)] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
    public DateTime Date { get; set; } 

[Display(Name = "Left IOP")] 
    public int IOPLeft { get; set; } 

Когда я пытаюсь запустить приложение я получаю следующее сообщение об ошибке:

An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

Additional information: LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.

Любого геп был бы весьма признателен Спасибо

ответ

3

Вы получили сообщение об ошибке из-за .ToString ("yyyyMMdd") i n код ниже. В принципе, SqlServer не знает, как интерпретировать функцию C# .ToString() и вызывает исключение.

var dataLeft = (from d in db.Appointments 
         select new 
         { 
          Date = d.Date.ToString("yyyyMMdd"), 
          IOPLeft = d.IOPLeft, 
         }).ToList(); 

Вы должны вытащить данные из базы данных в «правильном» формате, а затем манипулировать ими в соответствии с форматом, который вы хотели.

Так что-то вроде этого было бы лучше:

var dataLeft = (from d in db.Appointments 
         select new 
         { 
          Date = d.Date, 
          IOPLeft = d.IOPLeft, 
         }).ToList(); 

     var xSeries = dataLeft.Select(a => a.Date.ToString("yyyyMMdd")).ToArray(); 
+0

Это работает! Спасибо @Dmeel – coto2

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