Mencari Data dengan Cekap () Menggunakan Linq kepada Entiti
Satu keperluan biasa dalam akses data ialah menapis berdasarkan senarai nilai. Kaedah 'Contains()', tersedia dalam banyak bahasa pengaturcaraan, memudahkan tugas ini. Walau bagaimanapun, Linq to Entities, yang digunakan dengan Rangka Kerja Entiti Microsoft, tidak mempunyai fungsi ini sehingga baru-baru ini.
Mencipta Penyelesaian menggunakan 'Any()'
Pada mulanya, percubaan telah dibuat untuk menggunakan kaedah 'Any()' sebagai penyelesaian:
var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t;
Walau bagaimanapun, pendekatan ini menghadapi ralat disebabkan kaedah 'Mana-mana' yang tidak disokong.
Menyokong ' Mengandungi()' dalam Rangka Kerja Entiti 4 dan Ke atas
Nasib baik, bermula dengan Rangka Kerja Entiti 4, kaedah 'Mengandungi()' disokong secara asli. Ini bermakna kod berikut boleh digunakan untuk menapis berdasarkan senarai nilai:
var q = from t in svc.OpenTransaction where txnIds.Contains(t.OpenTransactionId) select t;
Menggunakan Kaedah Sambungan Tersuai untuk Versi EF Di Bawah 4
Untuk Versi EF sebelum 4, kaedah sambungan tersuai boleh dilaksanakan untuk menyediakan penyelesaian untuk 'Contains()':
public static IQueryable<TEntity> WhereIn<TEntity, TValue> ( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection ) { // ... Implementation goes here }
Penggunaan Kaedah Sambungan Tersuai
Untuk menggunakan kaedah sambungan, masukkan ungkapan pemilih dan senarai nilai untuk ditapis:
var contacts = context.Contacts.WhereIn(c => c.Name, GetContactNames());
Dengan penyelesaian ini, anda boleh menapis data dengan berkesan dalam pertanyaan Linq kepada Entiti menggunakan Contains().
Atas ialah kandungan terperinci Bagaimanakah Saya Meminta Data Secara Cekap Menggunakan Contains() dengan Linq kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!