Код, который у вас есть в настоящее время, по существу делает LEFT OUTER JOIN
, который получает все записи о выплатах и соответствующую запись аудита.
Предполагая, что у вас есть столбец отметки времени (скажем, CreatedOn ) в таблице Audits
, которая фиксирует момент создания этой записи аудита, вы можете использовать GROUP JOIN вот так вот -
private IQueryable<CashoutModel> GetCashoutModels() =>
_context.Cashouts.GroupJoin(_context.Audits,
c => c.Id.ToString(),
a => a.EntityId,
(cashout, audit) => new CashoutModel
{
Id = cashout.Id,
Amount = cashout.Amount,
Comment = cashout.Comment,
CreatedOn = cashout.CreatedOn,
RecipientAccountId = cashout.RecipientAccountId,
RecipientAccountName = cashout.RecipientAccountName,
State = cashout.State,
Reason = cashout.Reason,
CreatedBy = audit.OrderByDescending(x => x.CreatedOn)
.Select(y => y.Name)
.FirstOrDefault()
}).AsQueryable();