Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menapis Entiti dengan Senarai ID dalam Linq kepada Entiti tanpa \'Mengandungi()\'?

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

Patricia Arquette
Patricia Arquetteasal
2024-11-02 04:00:30841semak imbas

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>

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!

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