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

Comment implémenter la fonctionnalité « Contains() » dans Linq to Entities ?

Mary-Kate Olsen
Libérer: 2024-10-31 12:02:02
original
371 Les gens l'ont consulté

How to Implement 'Contains()' Functionality in Linq to Entities?

Solution de contournement pour l'implémentation de « Contains() » à l'aide de Linq to Entities

La méthode « Contains() » n'est pas intrinsèquement prise en charge par Linq to Entities. Entités, ce qui pose un défi lorsque l'on travaille avec des collections d'ID dans une requête. Nous présentons ici une solution réalisable pour remédier à cette limitation.

Solution :

Pour remplacer la méthode 'Contains()' non prise en charge, nous exploitons la méthode 'Any() ' à sa place :

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

Cependant, cette modification ne résout pas le problème de la non prise en charge de 'Any()' dans le contexte de Linq to Entities. Pour surmonter ce problème, nous proposons une approche alternative :

public static IQueryable<TEntity> WhereIn<TEntity, TValue>
(
this ObjectQuery<TEntity> query,
Expression<Func<TEntity, TValue>> selector,
IEnumerable<TValue> collection
)
Copier après la connexion

Cette méthode d'extension vous permet d'appliquer un filtre à une gamme de types et de propriétés d'entités.

Exemple d'utilisation :

Le code suivant montre comment utiliser la méthode « WhereIn() » :

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"
    );
}
Copier après la connexion

En employant cette solution, vous bénéficiez de la fonctionnalité « Contains() » tout en travaillant avec Linq to Entities, vous offrant une plus grande flexibilité dans vos requêtes.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!