ASP.NET Запрос MVC не показывает отдельных значений

#javascript #c# #asp.net-mvc #entity-framework #google-visualization

#javascript #c# #asp.net-mvc #entity-framework #google-визуализация

Вопрос:

Я использую следующий запрос для использования в диаграммах Google. Он работает хорошо, но не показывает отдельные месяцы. Есть ли способ суммировать все HoursTaken для MonthOfHoliday каждого, чтобы избежать отсутствия различных значений?

  var querythpmpro = (from r in db.HolidayRequestForms
                     where r.EmployeeID == id
                     select new { Count = r.HoursTaken, Value = r.MonthOfHoliday.ToString() }).OrderBy(e => e.Value);
  

Сообщение об ошибке с консоли Uncaught (in promise) Error: Type mismatch. Value 1 does not match type string in column index 0

Редактировать:

 #region Total Hours Per Month

        var querythpmpro = (from r in db.HolidayRequestForms
                            where r.EmployeeID == id
                            group r by r.MonthOfHoliday into g
                            select new { Value = g.Key, Sum = g.Sum(h => h.HoursTaken) }
               ).OrderBy(e => e.Value);


        var resultthpmpro = querythpmpro.ToList();

        var datachartthpmpro = new object[resultthpmpro.Count];
        int Q = 0;
        foreach (var i in resultthpmpro)
        {
            datachartthpmpro[Q] = new object[] { i.Value, i.Sum};
            Q  ;
        }
        string datathpmpro = JsonConvert.SerializeObject(datachartthpmpro, Formatting.None);
        ViewBag.datajthpmpro = new HtmlString(datathpmpro);

        #endregion
  

Модель:

    public partial class HolidayRequestForm
  {
     public int RequestID { get; set; }
     public int EmployeeID { get; set; }
     public System.DateTime StartDate { get; set; }
     public System.DateTime FinishDate { get; set; }
     public decimal HoursTaken { get; set; }
     public string Comments { get; set; }
     public int YearCreated { get; set; }
     public int MonthCreated { get; set; }
     public int DayCreated { get; set; }
     public Nullable<int> YearOfHoliday { get; set; }
     public Nullable<bool> Approved { get; set; }
     public string SubmittedBy { get; set; }
     public string ApprovedBy { get; set; }
     public Nullable<int> WorkWeek { get; set; }
     public Nullable<int> MonthOfHoliday { get; set; }

     public virtual Employee Employee { get; set; }
  }
  

Скрипт:

   function drawChartA() {

    // Create the data table.

    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Value');
    data.addColumn('number', 'Count');
    data.addRows(datassthpmpro);

    // Set chart options
    var options = {
        'title': 'Holiday Hours Taken Per Month',
        'width': 600,
        'height': 350,
        'hAxis': { title: 'Month Number' },
        'vAxis': { title: 'Holiday Hours Taken' },
        'is3D': true,
        'legend': 'none'
    };
  

Комментарии:

1. ASP.NET MVC — это веб-фреймворк. Он не выполняет запросы. Вы, вероятно, спрашиваете о Entity Framework или EF Core. Какой из них это?

2. Entity Framework

3. @Conor8630 Пожалуйста, добавьте свой HolidayRequestForms класс модели к вопросу, пожалуйста.

4. @TanvirArjel выполнено

Ответ №1:

Как насчет группировки по MonthOfHoliday и выполнения Sum на HoursTaken :

 var querythpmpro = (from r in db.HolidayRequestForms
                     where r.EmployeeID == id
                     group r by r.MonthOfHoliday into g
                     select new { Value =  g.Key, Sum = g.Sum(h => h.HoursTaken) }
                   ).OrderBy(e => e.Value);
  

Комментарии:

1. @Conor8630, почему это, похоже, не работает? Есть ли какая-либо ошибка? можете ли вы предоставить больше информации?

2. Извините, диаграмма больше не отображается, возможно, это способ упорядочивания данных

3. Можете ли вы заглянуть в консоль и сравнить, как данные извлекаются с помощью этой группы by и как вам это нужно?

4. @Conor8630 Разве речь не о переименовании Count свойства в Sum ?

5. Я добавил остальную часть кода, я пытался присвоить ему оба имени в вашем запросе, но безуспешно. Выше приведено то, что у меня есть сейчас с остальной частью кода