Group collections by their elements property
If they all implemented a common interface then you could simplify it.

 public interface ICustomerItem
    {
        Guid CustomerId {get;}
     }


Concat the the items together

var items = invoices.Concat(payments).Concat(orders);


Then project them into your class

 items
.GroupBy(x =&gt; x.CustomerId)
.Select(g =&gt; 
          new CustomerInfo(g.Key, 
                 g.OfType&lt;Order&gt;(), 
                 g.OfType&lt;Payment&gt;(),
                 g.OfType&lt;Invoice&gt;())