[英]Linq to Entity, selecting group with or without value
您好需要有关LINQ查询的帮助。 我有一个叫做Shift的实体。 这个实体有几个值字段,但是我最喜欢的是ShiftID (int)
, ShiftDate (DateTime)
和GrossMount (decimal(10,2)
。这需要按月分组(将其绑定到ASP中的图形)。净)。
我需要按月分组的过去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。 Althoug我将需要从今天开始的日期(仅从当前月份的1开始)。 相信这是我的主要问题:GrossAmount = g.Count(),但我不确定
那里有任何LINQ专家可以给我推动吗?
使用GrossAmount = g.Sum(x => x.GrossAmount)
计算分组的Shift实体的GrossAmount总值。 我相信您在GrossAmount(GrossMount)属性名称中有错字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.