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
Susan Sarandonoriginal
2024-12-27 12:50:21327parcourir

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;

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
)

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;

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;

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