Penyelesaian untuk Melaksanakan 'Contains()' Menggunakan Linq kepada Entiti
Kaedah 'Contains()' tidak disokong oleh Linq untuk Entiti, yang menimbulkan cabaran apabila bekerja dengan koleksi ID dalam pertanyaan. Di sini, kami membentangkan penyelesaian yang boleh dilaksanakan untuk menangani had ini.
Penyelesaian:
Untuk menggantikan kaedah 'Contains()' yang tidak disokong, kami memanfaatkan 'Any() ' kaedah di tempatnya:
var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t;
Walau bagaimanapun, pengubahsuaian ini tidak menangani isu 'Any()' not disokong dalam konteks Linq kepada Entiti. Untuk mengatasinya, kami menawarkan pendekatan alternatif:
public static IQueryable<TEntity> WhereIn<TEntity, TValue> ( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection )
Kaedah sambungan ini membolehkan anda menggunakan penapis pada julat jenis dan sifat entiti.
Contoh Penggunaan:
Kod berikut menunjukkan cara menggunakan 'WhereIn()' kaedah:
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" ); }
Dengan menggunakan penyelesaian ini, anda memperoleh kefungsian 'Mengandungi()' semasa bekerja dengan Linq kepada Entiti, memberikan anda lebih fleksibiliti dalam pertanyaan anda.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi \'Contains()\' dalam Linq kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!