Я использую ASP.NET MVC 5 EF 6. Я применил логику для создания отчета, который показывает все продажи за выбранный месяц за каждый день. Кажется, он работает нормально в течение нескольких дней. Но позже я внес некоторые изменения. Теперь он не показывает дату в порядке. Я проверил и не смог найти ошибку. Пожалуйста, ребята, проверьте это и сообщите мне, где я ошибся?ASP.NET MVC: продажи каждый день в месяц
Мой контроллер
public ActionResult MonthlySalesByDate(string _year, string _month)
{
//assign incoming values to the variables
int year =0 , month =0 ;
//check if year is null
if (string.IsNullOrWhiteSpace(_year) && _month != null)
{
year = DateTime.Now.Date.Year;
month = Convert.ToInt32(_month.Trim());
}
else
{
year = Convert.ToInt32(_year.Trim());
month = Convert.ToInt32(_month.Trim());
}
//calculate ttal number of days in a particular month for a that year
int daysInMonth = DateTime.DaysInMonth(year, month);
var days = Enumerable.Range(1, daysInMonth);
var query = db.Sales.Where(x => x.Date.Year == year && x.Date.Month == month).Select(g => new
{
Day = g.Date.Day,
Total = g.GrandTotal
});
var model = new SalesVM
{
Date = new DateTime(year, month, 1),
Days = days.GroupJoin(query, d => d, q => q.Day, (d, q) => new DayTotalVM
{
Day = d,
Total = q.Sum(x => x.Total)
}).ToList()
};
return View(model);
}
Мои Просмотр моделей:
public class DayTotalVM
{
public int Day { get; set; }
public decimal Total { get; set; }
}
public class SalesVM
{
public DateTime Date { get; set; }
public List<DayTotalVM> Days { get; set; }
}
Вид:
<table class="table table-striped" id="datatable">
<thead>
<tr class="dataTableHead">
<th>Day</th>
<th>Amount</th>
</tr>
</thead>
@{decimal total = 0;}
@for (int i = 0; i < Model.Days.Count; i++)
{
<tr>
<td>
@{
<text>@year - @mnth - </text>
@Html.DisplayFor(m => m.Days[i].Day);
DateTime dateValue = new DateTime(year, mnth, Model.Days[i].Day);
<text> : @dateValue.ToString("dddd")</text>
}
</td>
<td class="sales">
@{
if (Convert.ToString(Html.DisplayFor(m => m.Days[i].Total)) != "0.00")
{
<strong style="color:#4800ff;"><strong> @Html.DisplayFor(m => m.Days[i].Total) </strong></strong>
}
else
{
@Html.DisplayFor(m => m.Days[i].Total)
}
}
@{total += (decimal)(Model.Days[i].Total);}
</td>
</tr>
}
<tfoot class="dataTableHead">
<tr>
<td>
<h4 class="pull-right">Total :</h4>
</td>
<td>
<h4>@total</h4>
</td>
</tr>
</tfoot>
</table>
Результат:
Thanks @ArtOfCode .. Не осознал этого! –