Maison >développement back-end >C++ >Comment les expressions LINQ Lambda peuvent-elles être utilisées pour effectuer efficacement des jointures multi-tables ?
Maîtriser les jointures multi-tables avec les expressions LINQ Lambda
LINQ (Language Integrated Query) offre un moyen puissant et efficace d'interagir avec les bases de données. Une tâche fréquente dans la récupération de données consiste à joindre plusieurs tables. Ce guide montre comment effectuer ces jointures efficacement à l'aide des expressions lambda LINQ.
Considérons trois exemples de classes représentant des tables de base de données :
Id
, ProdName
, ProdQty
Id
, CatName
ProdId
, CatId
LINQ Join
facilite la jointure de ces tables. Voici un exemple :
<code class="language-csharp">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>
Ce code rejoint Product
, ProductCategory
et Category
en fonction de leurs colonnes respectives Id
et CatId
. Le résultat, cependant, est un objet imbriqué.
Pour créer un résultat plus épuré, un seul objet contenant toutes les propriétés pertinentes, utilisez la méthode Select
:
<code class="language-csharp">var categorizedProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });</code>
Voici comment attribuer correctement les propriétés des tables jointes à ce nouvel objet :
<code class="language-csharp">var categorizedProducts = query.Select(m => new { ProdId = m.productproductcategory.product.Id, // or m.productproductcategory.productcategory.ProdId CatId = m.category.Id, // other property assignments from m.productproductcategory.product, m.productproductcategory.productcategory, and m.category });</code>
Cette approche, combinant les expressions lambda LINQ avec Join
et Select
, fournit une méthode efficace pour les jointures multi-tables, aboutissant à un objet unique et facilement gérable contenant toutes les données nécessaires.
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!