Linq to Entiti: Alternatif untuk 'Contains()' Menggunakan Kaedah Sambungan
Kaedah 'Contains()' tidak disokong secara langsung dalam Linq kepada Entiti, menimbulkan cabaran apabila menapis entiti berdasarkan senarai ID. Untuk menangani had ini, pendekatan alternatif menggunakan kaedah sambungan boleh digunakan.
Penyelesaian:
Kaedah sambungan 'WhereIn()' menyediakan penyelesaian untuk 'Mengandungi ()' dengan menterjemah perbandingan kepada satu siri ungkapan 'Equals()'. Kaedah sambungan ini boleh dilaksanakan seperti berikut:
<code class="csharp">public static IQueryable<TEntity> WhereIn<TEntity, TValue> ( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection ) { // ... implementation details omitted ... }</code>
Penggunaan:
Kaedah 'WhereIn()' boleh digunakan untuk menapis entiti berdasarkan koleksi ID:
<code class="csharp">List<long?> txnIds = new List<long?>(); // Fill txnIds var q = from t in svc.OpenTransaction where txnIds.WhereIn(t => t.OpenTransactionId) select t;</code>
Sebagai alternatif, jika koleksi ID adalah statik, ia boleh diberikan terus ke sambungan kaedah:
<code class="csharp">var q = context.Contacts.WhereIn(c => c.Name, "Contact1", "Contact2", "Contact3", "Contact4" );</code>
Nota:
Dalam Rangka Kerja Entiti versi 4 dan ke atas, kaedah 'Mengandungi()' disokong secara langsung, menghapuskan keperluan untuk penyelesaian dibentangkan di sini.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Entiti dengan Senarai ID dalam Linq kepada Entiti tanpa \'Mengandungi()\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!