#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. Я добавил остальную часть кода, я пытался присвоить ему оба имени в вашем запросе, но безуспешно. Выше приведено то, что у меня есть сейчас с остальной частью кода