Maison  >  Article  >  développement back-end  >  Comment implémenter la fonctionnalité « Contains() » dans Linq to Entities ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 12:02:02435parcourir

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;

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
)

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"
    );
}

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!

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