Mengandungi() Penyelesaian Fungsi Menggunakan Linq kepada Entiti
Soalan:
Cara menggunakan fungsi Contains() dalam pertanyaan Linq kepada Entiti, walaupun kekurangan sokongan?
Jawapan:
Kemas kini: Setakat Rangka Kerja Entiti ( EF) versi 4 dan lebih baru, Contains() disokong secara langsung.
Untuk versi EF yang lebih awal, penyelesaian diperlukan:
Kaedah Sambungan Tersuai untuk Contains()
Buat kaedah sambungan berikut:
<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>
Versi Koleksi Statik Pilihan
Secara pilihan, anda boleh mencipta versi yang membenarkan koleksi statik sebagai input:
<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>
Penggunaan:
Dengan kaedah sambungan ini, anda boleh menggunakan Contains() dalam pertanyaan Linq kepada Entiti anda seperti berikut:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Fungsi Contains() dalam Linq kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!