Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan kaedah LINQ yang berbeza () pada sifat objek tertentu?

Bagaimanakah saya boleh menggunakan kaedah LINQ yang berbeza () pada sifat objek tertentu?

Barbara Streisand
Barbara Streisandasal
2025-02-02 09:16:08320semak imbas

How Can I Use LINQ's Distinct() Method on Specific Object Properties?

menggunakan Linq's berbeza () untuk sifat objek unik

Kaedah LINQ

dengan cekap menghilangkan item pendua dari urutan. Walau bagaimanapun, anda sering perlu mengenal pasti keunikan berdasarkan sifat objek tertentu, bukan keseluruhan objek. Distinct() Contohnya: Orang yang unik berdasarkan id

Katakan anda mempunyai kelas dengan harta . Untuk mendapatkan senarai orang yang unik berdasarkan ID mereka, kumpulan senarai dengan

dan pilih orang pertama dari setiap kumpulan:

Person Id Id Mengendalikan pelbagai sifat

<code class="language-csharp">List<Person> distinctPeople = allPeople
    .GroupBy(p => p.Id)
    .Select(g => g.First())
    .ToList();</code>
3

Nota penting: Keserasian pembekal pertanyaan

Id Beberapa pembekal pertanyaan (seperti Versi Lama Rangka Kerja Entiti) mungkin membuang pengecualian jika kumpulan kosong. Dalam kes sedemikian, ganti dengan FavoriteColor. Jika

kembali
<code class="language-csharp">List<Person> distinctPeople = allPeople
    .GroupBy(p => new { p.Id, p.FavoriteColor })
    .Select(g => g.First())
    .ToList();</code>
, anda perlu mengendalikan kemungkinan itu dalam kod anda.

EF Core (Pre-Version 6) Penyelesaian

First() Untuk versi teras EF sebelum 6, pendekatan yang lebih mantap diperlukan untuk mengendalikan kumpulan kosong yang berpotensi. Rujuk Jawapan Stack Overflow ini untuk penyelesaian terperinci: FirstOrDefault() https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11 FirstOrDefault() null

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan kaedah LINQ yang berbeza () pada sifat objek tertentu?. 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