Maison > base de données > tutoriel mysql > Comment implémenter efficacement les sous-requêtes IN dans LINQ to SQL ?

Comment implémenter efficacement les sous-requêtes IN dans LINQ to SQL ?

Susan Sarandon
Libérer: 2024-12-27 12:50:21
original
361 Les gens l'ont consulté

How to Efficiently Implement IN Subqueries in LINQ to SQL?

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

L'utilisation des sous-requêtes IN dans LINQ to SQL peut être un moyen efficace de corréler les données à partir de plusieurs tables. Voici comment l'aborder :

Implémentation générale d'une requête IN :

Pour implémenter une requête IN dans LINQ to SQL, suivez cette syntaxe :

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

Exemple spécifique :

Revoyons l'exemple SQL requête :

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

Dans LINQ to SQL, cela se traduirait par :

var query = from f in db.Foo
            let fubars = from fb in db.FooBar
                          where fb.BarId == 1000
                          select fb.FooId
            where fubars.Contains(f.FooId)
            select f;
Copier après la connexion

Considérations supplémentaires :

Pour les requêtes EXISTS, vous peut utiliser la méthode Any() au lieu de Contains() :

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal