Maison > base de données > tutoriel mysql > Comment traduire les sous-requêtes IN de SQL en LINQ to SQL ?

Comment traduire les sous-requêtes IN de SQL en LINQ to SQL ?

Linda Hamilton
Libérer: 2024-12-28 18:39:14
original
456 Les gens l'ont consulté

How to Translate SQL's IN Subqueries into LINQ to SQL?

Gestion des sous-requêtes IN avec LINQ to SQL

Dans LINQ to SQL, vous pouvez rencontrer le besoin de gérer des sous-requêtes IN, une opération courante dans SQL. Considérons un scénario :

Question :

Comment pouvons-nous traduire la requête SQL suivante en LINQ to SQL ?

SELECT f.*
FROM Foo f
WHERE f.FooId IN (
    SELECT fb.FooId
    FROM FooBar fb
    WHERE fb.BarId = 1000
)
Copier après la connexion

Réponse :

Pour implémenter une telle requête dans LINQ to SQL, nous devons utiliser deux notions :

1. Sous-requête en tant que collection de clés :

Nous commençons par définir la sous-requête comme une collection de clés qui satisfont à la condition de la clause IN.

var fooBarIds = from fb in context.FooBar
                where fb.BarId == 1000
                select fb.FooId;
Copier après la connexion

2. Requête avec la méthode Contains :

Ensuite, nous pouvons utiliser la méthode Contains sur la collection de clés pour vérifier si un FooId donné est présent.

var result = from f in context.Foo
             where fooBarIds.Contains(f.FooId)
             select f;
Copier après la connexion

Cette requête renverra tous lignes de la table Foo où le FooId existe dans la collection de FooIds récupérés du sous-requête.

Cas d'utilisation étendus :

Les mêmes principes peuvent être appliqués pour implémenter d'autres opérations de sous-requête, telles que EXISTS :

// EXISTS
var q = from t1 in table1
        let t2s = from t2 in table2
                  where <Conditions for table2>
                  select t2.KeyField
        where t2s.Any(t1.KeyField)
        select t1;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal