Maison > développement back-end > C++ > Comment utiliser la fonction Contains() dans Linq to Entities ?

Comment utiliser la fonction Contains() dans Linq to Entities ?

Susan Sarandon
Libérer: 2024-10-29 11:14:29
original
599 Les gens l'ont consulté

How to Use the Contains() Function in Linq to Entities?

Solution de contournement de la fonction Contains() utilisant Linq to Entities

Question :

Comment utiliser la fonction Contains() dans les requêtes Linq to Entities, malgré son manque de support ?

Réponse :

Mise à jour : Depuis Entity Framework ( EF) version 4 et ultérieure, Contains() est directement pris en charge.

Pour les versions antérieures d'EF, une solution de contournement est nécessaire :

Méthode d'extension personnalisée pour Contains()

Créez la méthode d'extension suivante :

<code class="csharp">public static IQueryable<TEntity> WhereIn<TEntity, TValue>(
    this ObjectQuery<TEntity> query,
    Expression<Func<TEntity, TValue>> selector,
    IEnumerable<TValue> collection)
{
    // ... (implementation remains the same as in the provided code)
}</code>
Copier après la connexion

Version de collection statique facultative

En option, vous pouvez créer une version qui permet une collection statique comme input :

<code class="csharp">public static IQueryable<TEntity> WhereIn<TEntity, TValue>(
    this ObjectQuery<TEntity> query,
    Expression<Func<TEntity, TValue>> selector,
    params TValue[] collection)
{
    return WhereIn(query, selector, (IEnumerable<TValue>)collection);
}</code>
Copier après la connexion

Utilisation :

Avec cette méthode d'extension, vous pouvez utiliser Contains() dans vos requêtes Linq to Entities comme suit :

<code class="csharp">public static void Main()
{
    using (MyObjectContext context = new MyObjectContext())
    {
        // Using method 1 - collection provided as collection
        var contacts1 = context.Contacts.WhereIn(c => c.Name, GetContactNames());

        // Using method 2 - collection provided statically
        var contacts2 = context.Contacts.WhereIn(c => c.Name,
            "Contact1",
            "Contact2",
            "Contact3",
            "Contact4");
    }
}</code>
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
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