Comment effectuer une Jointure entre plusieurs tables dans LINQ lambda

Je suis en train d'effectuer une Jointure entre plusieurs tables dans LINQ. J'ai les classes suivantes:

Product {Id, ProdName, ProdQty}

Category {Id, CatName}

ProductCategory{ProdId, CatId} //association table

Et j'utilise le code suivant (où product, category et productcategory sont des instances de classes ci-dessus):

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

Avec ce code je obtenir un objet de la classe suivante:

QueryClass { productproductcategory, category}

Où producproductcategory est de type:

ProductProductCategoryClass {product, productcategory}

Je ne comprends pas où l'a rejoint à "la table", je m'attendais à un classe unique qui contient toutes les propriétés de la classe.

Mon but est de remplir un objet avec des propriétés résultant de la requête:

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

comment puis-je atteindre cet objectif?

  • Je ne comprends pas...pourquoi m.ProdId = ??? au lieu de prodId = m.ProdId?
  • Parce que je ne sais pas à l'avance comment naviguer et obtenir ProdId
InformationsquelleAutor CiccioMiami | 2012-03-15