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

Barbara Streisand
Lepaskan: 2024-10-29 07:12:03
asal
638 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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
}
Salin selepas log masuk

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());
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan