Maison >développement back-end >C++ >Comment utiliser correctement les expressions LINQ JOIN et LAMBDA pour éviter les erreurs de requête courantes?

Comment utiliser correctement les expressions LINQ JOIN et LAMBDA pour éviter les erreurs de requête courantes?

Barbara Streisand
Barbara Streisandoriginal
2025-01-28 16:32:11349parcourir

How to Correctly Use LINQ Join and Lambda Expressions to Avoid Common Query Errors?

Linq et Lambda Expression join / où: résolvez l'erreur de requête

Lors de l'utilisation d'expressions JOIN et LAMBDA de Linq, des erreurs sont souvent rencontrées. Explorons une mauvaise scène commune et explorons des solutions claires.

Les requêtes suivantes sont conçues pour connecter deux tables en fonction des conditions de l'ID, mais elle provoquera plusieurs erreurs:

Afin de corriger ces erreurs, veuillez considérer les options suivantes:
<code class="language-c#">int id = 1;
var query = database.Posts.Join(
    database.Post_Metas,
    post => database.Posts.Where(x => x.ID == id),
    meta => database.Post_Metas.Where(x => x.Post_ID == id),
    (post, meta) => new { Post = post, Meta = meta }
);</code>

<.> 1. Utilisez Linq pour interroger la grammaire:

Afin d'obtenir un plus naturel et plus similaire à SQL, veuillez sélectionner la grammaire de requête LINQ:

<.> 2. Utilisez la méthode d'expansion LINQ:

<code class="language-c#">var id = 1;
var query =
   from post in database.Posts
   join meta in database.Post_Metas on post.ID equals meta.Post_ID
   where post.ID == id
   select new { Post = post, Meta = meta };</code>

Si vous insistez pour utiliser l'expression de Lambda, veuillez ajuster la grammaire comme suit:

Veuillez garder à l'esprit que lorsque vous utilisez l'expression de lambda:

<code class="language-c#">var id = 1;
var query = database.Posts    // 起始点(表等效项)
   .Join(database.Post_Metas, // 内连接表
      post => post.ID,        // 选择主键
      meta => meta.Post_ID,   // 选择外键
      (post, meta) => new { Post = post, Meta = meta }) // 选择
   .Where(postAndMeta => postAndMeta.Post.ID == id);    // 筛选条件</code>
Le support extérieur contient une opération de jointure.

Les deux premières expressions lambda sont sélectionnées pour connecter les clés principales et externes.
  • La troisième expression de Lambda définit le choix des attributs de résultat.
  • où les conditions de dépistage de la définition de la clause.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn