Maison >base de données >tutoriel mysql >Comment répliquer l'instruction « IN » de SQL à l'aide de LINQ ?

Comment répliquer l'instruction « IN » de SQL à l'aide de LINQ ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 21:32:11874parcourir

How to Replicate SQL's

Équivalent LINQ de l'instruction "IN" de SQL

Dans cet article, nous aborderons la tâche d'écriture d'une requête LINQ qui émule le comportement de l'instruction SQL "IN". Cette requête récupérera les éléments qui correspondent à une liste de balises spécifiée.

Imaginez le schéma de base de données suivant qui prend en charge l'élément marquage :

Articles

  • ItemId
  • Marque
  • Nom
  • Prix
  • Condition
  • Description
  • Actif

Tag s

  • TagId
  • Nom
  • Actif

TagMap

  • TagMapId
  • TagId
  • ItemId
  • Actif

Problème Déclaration :
Écrivez une requête LINQ qui renvoie les éléments correspondant à une liste de balises spécifiée. Par exemple, si les balises souhaitées sont 2, 3, 4 et 7, la requête doit récupérer les éléments avec ces balises.

Solution :
Nous pouvons y parvenir en utilisant ce qui suit Requête LINQ :

var TagIds = new[] { 2, 3, 4, 7 };
var q = from map in Context.TagMaps
where TagIds.Contains(map.TagId)
select map.Items;

La requête initialise d'abord un tableau entier TagIds avec les ID de balise souhaités. Elle joint ensuite la table TagMaps à ce tableau à l'aide de la méthode Contains, qui vérifie si la colonne TagId de TagMaps existe dans le tableau TagIds.

Cette requête génère une clause "IN" paramétrée dans l'instruction SQL, garantissant ainsi une efficacité exécution. Cela se traduit essentiellement par le SQL suivant :

SELECT Items
FROM TagMaps
WHERE TagId IN (2, 3, 4, 7);

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