Cómo realizar unir entre varias tablas en LINQ lambda

Estoy tratando de realizar unÚnete entre varias tablas en LINQ. Tengo las siguientes clases:

Product {Id, ProdName, ProdQty}

Category {Id, CatName}

ProductCategory{ProdId, CatId} //association table

Y uso el siguiente código (dondeproduct, category yproductcategory son instancias de las clases anteriores):

var query = product.Join(productcategory, p => p.Id, pc => pc.ProdID, (p, pc) => new {product = p, productcategory = pc})
                   .Join(category, ppc => ppc.productcategory.CatId, c => c.Id, (ppc, c) => new { productproductcategory = ppc, category = c});

Con este código obtengo un objeto de la siguiente clase:

QueryClass { productproductcategory, category}

Donde producproductcategory es de tipo:

ProductProductCategoryClass {product, productcategory}

No entiendo dónde está la "tabla" unida, esperaba un clase individual que contiene todas las propiedades de las clases involucradas.

Mi objetivo es rellenar otro objeto con algunas propiedades resultantes de la consulta:

CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });

¿Cómo puedo lograr este objetivo?

Respuestas a la pregunta(10)

Su respuesta a la pregunta