Как присоединиться к групповому дженерику - PullRequest
2 голосов
/ 01 апреля 2020

У меня есть вопрос о том, как сделать это объединение ниже более общим c, как мы можем видеть здесь, если у меня есть 3 счета, мне нужно добавить еще 3 объединения,

Вы хотите сделать это объединение как можно c как можно?

(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();

класс

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; }
}

1 Ответ

0 голосов
/ 01 апреля 2020

Вы можете использовать 'или' для консолидации избыточностей, но вы потеряете контекст, из которого были получены данные счета-фактуры из invoice1 или invoice2.

(from line in associationRecord
 join invoice in headers on line.InvoiceNumber equals invoice1.DocumentNumber || line.AssociatedInvoiceNumber equals invoice.DocumentNumber
 join item in items on invoice.DocumentNumber equals item.InvoiceNumber into hItems
 join impDeclaration in importDeclarations on invoice.DocumentNumber equals impDeclaration.InvoiceNumberinto g
 from imp in g.DefaultIfEmpty()
 select new { invoice, hItems, imp }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...