I have a question here on how to make this join below more generic, as we can see here if I have 3 invoices I have to add 3 more joins,
Would you like to make this join as generic as possible?
(from line in associationRecord
join invoice1 in headers on line.InvoiceNumber equals invoice1.DocumentNumber
join item1 in items on invoice1.DocumentNumber equals item1.InvoiceNumber into h1Items
join impDeclaration1 in importDeclarations on invoice1.DocumentNumber equals impDeclaration1.InvoiceNumber into g1
from imp1 in g1.DefaultIfEmpty()
join invoice2 in headers on line.AssociatedInvoiceNumber equals invoice2.DocumentNumber
join item2 in items on invoice2.DocumentNumber equals item2.InvoiceNumber into h2Items
join impDeclaration2 in importDeclarations on invoice2.DocumentNumber equals impDeclaration2.InvoiceNumber into g2
from imp2 in g2.DefaultIfEmpty()
select new { invoice1, invoice2, h1Items, h2Items, imp1, imp2 }).ToList();
class
internal sealed class AssociatedInvoiceRecord
{
public string? AssociatedInvoiceNumber { get; set; }
public string? InvoiceNumber { get; set; }
}
internal sealed class InvoiceHeaderRecord
{
public string? DocumentNumber { get; set; }
}
internal sealed class InvoiceImportDeclarationRecord
{
public string? InvoiceNumber { get; set; }
}
internal sealed class InvoiceItemRecord
{
public string? InvoiceNumber { get; set; }
}