Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara menggunakan kaedah LINQ yang berbeza () pada sifat -sifat tertentu objek kompleks?

Bagaimana cara menggunakan kaedah LINQ yang berbeza () pada sifat -sifat tertentu objek kompleks?

Barbara Streisand
Barbara Streisandasal
2025-02-02 09:06:10502semak imbas

How to Use LINQ's Distinct() Method on Specific Properties of Complex Objects?

Mengekstrak rekod unik berdasarkan sifat tertentu menggunakan linq

Kaedah Linq

dengan cekap menghilangkan elemen pendua dari koleksi. Walau bagaimanapun, apabila berurusan dengan objek kompleks (mis., A Distinct()), secara langsung menggunakan List<T> pada keseluruhan objek mungkin tidak menghasilkan hasil yang dikehendaki jika anda hanya memerlukan keunikan berdasarkan sifat -sifat tertentu. Artikel ini menunjukkan bagaimana untuk mencapai ini menggunakan Distinct() dan GroupBy. Select

memanfaatkan kumpulan untuk keunikan berasaskan harta

Kunci untuk mendapatkan rekod yang berbeza berdasarkan sifat khusus adalah menggunakan kaedah LINQ. Unsur -unsur kumpulan ini berkongsi harta yang sama (atau gabungan sifat) dan kemudian membolehkan anda memilih wakil dari setiap kumpulan.

GroupBy mari kita ilustrasikan dengan objek

, di mana setiap

objek mempunyai sifat seperti List<Person> dan Person: Id Name

Untuk mendapatkan objek yang berbeza berdasarkan semata -mata pada harta
<code>Person1: Id=1, Name="Test1"
Person2: Id=1, Name="Test1"
Person3: Id=2, Name="Test2"</code>
, gunakan pertanyaan LINQ berikut:

Person Id di sini,

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

mereka. GroupBy(p => p.Id) kemudian memilih elemen pertama dari setiap kumpulan, dengan berkesan memberi anda satu objek Person setiap unik Id. Select(g => g.First()) Person Id Memperluas ke pelbagai sifat

Teknik ini mudah meluas ke pelbagai sifat. Untuk kumpulan oleh kedua -dua dan

:

Id FavoriteColor Kumpulan ini

objek berdasarkan gabungan
<code class="language-csharp">List<Person> distinctPeople = allPeople
  .GroupBy(p => new { p.Id, p.FavoriteColor })
  .Select(g => g.First())
  .ToList();</code>
dan

, memastikan keunikan merentasi kedua -dua sifat. Sekali lagi, Person memilih wakil tunggal dari setiap kumpulan. Id FavoriteColor Select(g => g.First()) Pertimbangan penting

Pendekatan ini menganggap pembekal pertanyaan anda boleh mengendalikan kumpulan yang berpotensi kosong. Sekiranya ini tidak dijamin, pertimbangkan untuk menggunakan bukannya

untuk mengendalikan kes tersebut dengan anggun.

FirstOrDefault() Untuk versi lama Rangka Kerja Entiti (sebelum versi 6), kaedah alternatif mungkin diperlukan. Rujuk Stack Overflow Jawapan untuk Panduan: First() https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11

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