我正在试图弄清楚如何从我的查询中选择最后两个“交易”。
我的查询看起来像这样
var summary= (from tType in _context.CommandCentre.TransactionTypes
join tSummary in _context.CommandCentre.TransSummary on tType.Id equals tSummary.TransactionType
where tSummary.ChargeFlag.ToLower() == ChargeFlag.Overcharge.ToString().ToLower()
group tSummary by new { tType.Name, tSummary.NumberOfTransactions, tSummary.PeriodDate }
into gResult
select new
{
Fee = gResult.Key.Name,
TransactionCount = gResult.Key.NumberOfTransactions,
Period = gResult.Key.PeriodDate,
ActualAmount = gResult.Sum(x => x.ActualAmount),
}).OrderByDescending(x=>x.Period);
现在如果我做Take(2)
我只获得最后两个记录,而我想获得我选择的每个“费用”的最后两个记录。基本上每个“费用”的两个记录按“期间”日期排序。
不确定如何在单个查询中执行此操作。
答案 0 :(得分:3)
试试这个:
var result = summary.GroupBy(p => p.Fee)
.SelectMany(d => d.OrderBy(r => r.Period).Take(2))
.ToList();