Maison > développement back-end > C++ > le corps du texte

Comment interroger des données efficacement en utilisant Contains() avec Linq to Entities ?

Barbara Streisand
Libérer: 2024-10-29 07:12:03
original
638 Les gens l'ont consulté

How Do I Query for Data Efficiently Using Contains() with Linq to Entities?

Requête efficace de données avec Contains() à l'aide de Linq to Entities

Une exigence courante dans l'accès aux données est de filtrer en fonction d'une liste de valeurs. La méthode 'Contains()', disponible dans de nombreux langages de programmation, simplifie cette tâche. Cependant, Linq to Entities, utilisé avec Entity Framework de Microsoft, manquait de cette fonctionnalité jusqu'à récemment.

Création d'une solution de contournement à l'aide de 'Any()'

Initialement, une tentative a été conçu pour utiliser la méthode 'Any()' comme solution de contournement :

var q = from t in svc.OpenTransaction
        where txnIds.Any<long>(tt => tt == t.OpenTransactionId)
        select t;
Copier après la connexion

Cependant, cette approche a rencontré une erreur en raison de la méthode 'Any' non prise en charge.

Prise en charge de ' Contains()' dans Entity Framework 4 et versions ultérieures

Heureusement, à partir d'Entity Framework 4, la méthode 'Contains()' est nativement prise en charge. Cela signifie que le code suivant peut être utilisé pour filtrer en fonction d'une liste de valeurs :

var q = from t in svc.OpenTransaction
        where txnIds.Contains(t.OpenTransactionId)
        select t;
Copier après la connexion

Utilisation d'une méthode d'extension personnalisée pour les versions EF inférieures à 4

Pour Versions EF antérieures à 4, une méthode d'extension personnalisée peut être implémentée pour fournir une solution de contournement pour « Contains() » :

public static IQueryable<TEntity> WhereIn<TEntity, TValue>
  (
    this ObjectQuery<TEntity> query,
    Expression<Func<TEntity, TValue>> selector,
    IEnumerable<TValue> collection
  )
{
// ... Implementation goes here
}
Copier après la connexion

Utilisation de la méthode d'extension personnalisée

Pour utiliser la méthode d'extension, transmettez l'expression du sélecteur et la liste des valeurs sur lesquelles filtrer :

var contacts = context.Contacts.WhereIn(c => c.Name, GetContactNames());
Copier après la connexion

Avec cette solution de contournement, vous pouvez filtrer efficacement les données dans les requêtes Linq to Entities à l'aide de Contains().

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