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!