Bagaimana untuk Menapis Entiti dengan Senarai ID dalam Linq kepada Entiti tanpa \'Mengandungi()\'?

Patricia Arquette
Lepaskan: 2024-11-02 04:00:30
asal
839 orang telah melayarinya

How to Filter Entities with a List of IDs in Linq to Entities without 'Contains()'?

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

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!