Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Meminta Data Secara Cekap Menggunakan Contains() dengan Linq kepada Entiti?

Bagaimanakah Saya Meminta Data Secara Cekap Menggunakan Contains() dengan Linq kepada Entiti?

Barbara Streisand
Barbara Streisandasal
2024-10-29 07:12:03640semak imbas

How Do I Query for Data Efficiently Using Contains() with Linq to Entities?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn