Вот пример типа класса, который я предложил:
Public Class UserProduct
Private user As User
Private product As Product
Public Property UserName As String
Get
Return user.UserName
End Get
Set
user.UserName = value
End Set
End Property
Public Property ProductId As Integer
Get
Return product.Id
End Get
Set
product.Id = value
End Set
End Property
Public Property ProductTitle As String
Get
Return product.Title
End Get
Set
product.Title = value
End Set
End Property
Public Sub New(user As User, product As Product)
Me.user = user
Me.product = product
End Sub
End Class
Как видите, свойства просто передают данные в соответствующие свойства внутренних объектов, а не сохраняют их напрямую.
Ваш запрос LINQ станет:
Select New UserProduct(user, product)