Bagaimana untuk Melaksanakan Fungsi \'Contains()\' dalam Linq kepada Entiti?

Mary-Kate Olsen
Lepaskan: 2024-10-31 12:02:02
asal
434 orang telah melayarinya

How to Implement 'Contains()' Functionality in Linq to Entities?

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

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

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

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!

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