您好需要一些有关 LINQ 查询的帮助。我有一个名为 Shift 的实体。该实体有几个值字段,但我感兴趣的是ShiftID (int)
,ShiftDate (DateTime)
和GrossMount (decimal(10,2)
. 这需要按月分组(将其绑定到 ASP.NET 中的图表)。
我需要按月分组的过去 12 个月的数据。我在这篇文章中取得了一些进展:Linq to Entity,选择没有价值的组,但不是一路。这是我现在的代码:
public IQueryable<Shift> GetPastMonths(int months, string accountNumber)
{
_context = new EtaxiEnteties();
var _date = DateTime.Today;
var _firstOfMonth = new DateTime(_date.Year, _date.Month, 31);
var _twelveMonthAgoFirstOfMonth = _firstOfMonth.AddMonths(-12);
// Generate a collection of the months and years for the last 12 months
var _monthYears = Enumerable.Range(-12, 12).Select(monthOffset => { var monthDate = _firstOfMonth.AddMonths(monthOffset); return new { y = monthDate.Year, m = monthDate.Month }; });
var _data = (from _monthYear in _monthYears
join _i in
(from _i in _context.Shifts.Where(acc => acc.Account.AccountNumber == accountNumber)
where _i.ShiftDate >= _twelveMonthAgoFirstOfMonth && _i.ShiftDate < _firstOfMonth
group _i by new { y = _i.ShiftDate.Year, m = _i.ShiftDate.Month } into g
select new { ShiftID = g.Key, GrossAmount = g.Count() }) on _monthYear equals _i.ShiftID into j
from _k in j.DefaultIfEmpty()
select new Shift() { ShiftDate = new DateTime(_monthYear.y, _monthYear.m, 1), GrossAmount = _k != null ? _k.GrossAmount : 0 });
return _data as IQueryable<Shift>;
}
现在我得到了一个按月分组的 Shift 对象集合作为回报,但仍然缺少 GrossAmount。虽然我从今天开始需要这个(仅从本月的 1 日开始)。相信这是我的主要问题:GrossAmount = g.Count(),但我不确定
那里有任何 LINQ 专家可以推动我吗?