Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara menggunakan LINQ untuk mendapatkan objek yang berbeza berdasarkan sifat tertentu?

Bagaimana cara menggunakan LINQ untuk mendapatkan objek yang berbeza berdasarkan sifat tertentu?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-02-02 09:01:10159semak imbas

How to Use LINQ to Get Distinct Objects Based on Specific Properties?

Menggunakan atribut spesifik linq ke senarai objek, aplikasi digunakan

Kaedah Linq membolehkan anda menghapuskan unsur -unsur berulang dalam set. Walau bagaimanapun, apabila memproses senarai objek kompleks, yang atribut diperlukan untuk keunikan.

Penyelesaian: Distinct()

Atas sebab ini, anda boleh mengumpulkan objek mengikut atribut yang diperlukan dan pilih elemen pertama dari setiap kumpulan. Ini akan memberikan anda senarai, objek dalam senarai ini adalah unik untuk atribut yang ditentukan. Contoh:

Pertimbangkan objek orang dengan atribut ID dan nama:

untuk mendapatkan senarai kakitangan yang berbeza berdasarkan atribut ID:

Ini akan menghasilkan senarai yang mengandungi hanya Person1 dan Person3.
<code>Person1:Id=1,Name="Test1"
Person2:Id=1,Name="Test1"
Person3:Id=2,Name="Test2"</code>

pelbagai atribut:

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

Jika anda perlu berkumpulan mengikut pelbagai atribut, anda boleh menggunakan jenis tanpa nama:

nota:

Beberapa penyedia pertanyaan mungkin perlu menggunakan

bukan
<code class="language-csharp">List<Person> distinctPeople = allPeople
  .GroupBy(p => new { p.Id, p.FavoriteColor })
  .Select(g => g.First())
  .ToList();</code>
untuk memastikan bahawa setiap kumpulan mempunyai sekurang -kurangnya satu elemen.

Untuk kaedah yang serasi yang serasi dengan LINQ ke entiti (Core EF) (sebelum versi ke -6), sila rujuk jawapan ini: https://www.php.cn/link/7DD21654CE1C39EC763219E71F11

Atas ialah kandungan terperinci Bagaimana cara menggunakan LINQ untuk mendapatkan objek yang berbeza berdasarkan sifat 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