Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man die Funktionalität „Contains()“ in Linq to Entities?

Wie implementiert man die Funktionalität „Contains()“ in Linq to Entities?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 12:02:02372Durchsuche

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

Problemumgehung für die Implementierung von „Contains()“ mithilfe von Linq to Entities

Die Methode „Contains()“ wird von Linq to nicht grundsätzlich unterstützt Entitäten, was bei der Arbeit mit ID-Sammlungen in einer Abfrage eine Herausforderung darstellt. Hier präsentieren wir eine praktikable Lösung, um diese Einschränkung zu beheben.

Lösung:

Um die nicht unterstützte Methode „Contains()“ zu ersetzen, nutzen wir die Methode „Any()“ '-Methode an ihrer Stelle:

var q = from t in svc.OpenTransaction
        where txnIds.Any<long>(tt => tt == t.OpenTransactionId)
        select t;

Diese Änderung behebt jedoch nicht das Problem, dass „Any()“ im Kontext von Linq to Entities nicht unterstützt wird. Um dieses Problem zu lösen, bieten wir einen alternativen Ansatz an:

public static IQueryable<TEntity> WhereIn<TEntity, TValue>
(
this ObjectQuery<TEntity> query,
Expression<Func<TEntity, TValue>> selector,
IEnumerable<TValue> collection
)

Mit dieser Erweiterungsmethode können Sie einen Filter auf eine Reihe von Entitätstypen und -eigenschaften anwenden.

Verwendungsbeispiel:

Der folgende Code zeigt, wie die Methode „WhereIn()“ verwendet wird:

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

Durch den Einsatz dieser Lösung erhalten Sie beim Arbeiten mit die Funktionalität von „Contains()“. Linq to Entities bietet Ihnen mehr Flexibilität bei Ihren Abfragen.

Das obige ist der detaillierte Inhalt vonWie implementiert man die Funktionalität „Contains()“ in Linq to Entities?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn