What you want to do suffers from poor normalization; AddressPrimary, AddressSecondary and AddressThird should not be order fields (I accept an order from your line from t in this.reposOrders.All() ), but should be contained in a weak entity or in the connection table.
However, you can get what you want with the following query:
var primary = from t in this.reposOrders.All() where t.CustomerID == customerID select t.AddressPrimary; var secondary = from t in this.reposOrders.All() where t.CustomerID == customerID select t.AddressSecondary; var tertiary = from t in this.reposOrders.All() where t.CustomerID == customerID select t.AddressThird; var ids = primary.Union(secondary).Union(tertiary); var addresses = from a in this.reposAddress.All() where ids.Contains(a.AddressID) select a;
source share