Maison >développement back-end >C++ >Comment effectuer plusieurs jointures de tables à l'aide d'expressions LINQ Lambda ?
Utilisez des expressions LINQ Lambda pour effectuer des jointures multi-tables
LINQ permet de joindre plusieurs tables à l'aide d'expressions lambda. Disons que nous avons trois classes :
<code>Product { Id, ProdName, ProdQty } Category { Id, CatName } ProductCategory { ProdId, CatId }</code>
Concaténation à l'aide d'expressions Lambda
Ces tables peuvent être jointes à l'aide du code suivant :
<code>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 } );</code>
Cela générera des objets des classes suivantes :
<code>QueryClass { productproductcategory, category }</code>
Remplir un nouvel objet
Pour remplir un nouvel objet avec les propriétés du résultat de la connexion, vous pouvez utiliser la méthode Select suivante :
<code>var categorizedProducts = query.Select(m => new { ProdId = ???, CatId = ???, // 其他赋值 });</code>
Obtenir la valeur de l'attribut
La propriété spécifique à attribuer peut être obtenue à partir de l'objet connecté de la manière suivante :
<code>ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId CatId = m.c.CatId // 其他赋值</code>
Alternatives à la syntaxe des requêtes
Vous pouvez également utiliser la syntaxe de requête, qui offre une approche plus concise :
<code>var categorizedProducts = from p in product join pc in productcategory on p.Id equals pc.ProdId join c in category on pc.CatId equals c.Id select new { ProdId = p.Id, // 或 pc.ProdId CatId = c.CatId // 其他赋值 };</code>
Les résultats de cette requête sont les mêmes que ceux de la méthode d'expression lambda. Si la lisibilité est plus importante, il est recommandé d'utiliser la syntaxe de requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!