Contains()-Funktions-Workaround mit Linq to Entities
Frage:
Verwendung die Funktion „Contains()“ in Linq-to-Entities-Abfragen trotz fehlender Unterstützung?
Antwort:
Aktualisierung: Ab Entity Framework ( Ab Version 4 von EF) wird Contains() direkt unterstützt.
Für frühere Versionen von EF ist eine Problemumgehung erforderlich:
Benutzerdefinierte Erweiterungsmethode für Contains()
Erstellen Sie die folgende Erweiterungsmethode:
<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>
Optionale statische Sammlungsversion
Optional können Sie eine Version erstellen, die eine statische Sammlung als ermöglicht Eingabe:
<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>
Verwendung:
Mit dieser Erweiterungsmethode können Sie Contains() in Ihren Linq to Entities-Abfragen wie folgt verwenden:
<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>
Das obige ist der detaillierte Inhalt vonWie verwende ich die Funktion „Contains()' in Linq to Entities?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!