У меня есть список плоских объектов, возвращаемых из запроса sql, типа:
public class Summary
{
public int ApartmentId { get; set; }
public int LoanId { get; set; }
public int PaymentId { get; set; }
public bool? RepaymentRequested { get; set; }
public DateTime LoanStartDate { get; set; }
public DateTime PaymentDate { get; set; }
}
Мне нужно Automap для группировки его в сложную структуру DTO
public class ApartmentSummaryDTO
{
public int ApartmentId { get; set; }
public bool? RepaymentRequested { get; set; }
public IEnumerable<LoanSummaryDTO> LoanSummaries { get; set; }
}
public class LoanSummaryDTO
{
public int LoanId { get; set; }
public DateTime LoanStartDate { get; set; }
public IEnumerable<PaymentSummaryDTO> PaymentSummaries { get; set; }
}
public class PaymentSummaryDTO
{
public int PaymentId { get; set; }
public DateTime PaymentDate { get; set; }
}
Я могу добиться этого, используя LINQ, например:
return data.GroupBy(d => d.ApartmentId)
.Select(group => new ApartmentSummaryDTO()
{
ApartmentId = group.Key,
RepaymentRequested = group.FirstOrDefault()?.RepaymentRequested,
LoanSummaries = group.GroupBy(loanGroup => loanGroup.LoanId).Select(l => new LoanSummaryDTO()
{
LoanId = l.Key,
LoanStartDate = l.First().LoanStartDate,
PaymentSummaries = l.Select(p => new PaymentSummaryDTO()
{
PaymentId = p.PaymentId,
PaymentDate = p.PaymentDate
})
})
}).FirstOrDefault();
Но не могу понять, как создать конфигурацию с помощью автоматического преобразователя, чтобы получить тот же результат, что и LINQ.