こんにちはLINQクエリについてサポートが必要です。Shiftというエンティティがあります。このエンティティにはいくつかの値フィールドがありますが、私が興味を持っているのは、、ShiftID (int)
です。そして、これを月ごとにグループ化する必要があります(これをASP.NETのグラフにバインドします)。ShiftDate (DateTime)
GrossMount (decimal(10,2)
月ごとにグループ化された過去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スペシャリストはいますか?