Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Mengira dan Merumuskan Objek Pendua dengan Cekap dalam Senarai C#?

Bagaimanakah LINQ Boleh Mengira dan Merumuskan Objek Pendua dengan Cekap dalam Senarai C#?

Barbara Streisand
Barbara Streisandasal
2025-01-03 02:25:38938semak imbas

How Can LINQ Efficiently Count and Summarize Duplicate Objects in a C# List?

Mengira Pendua dengan LINQ dan C

Dalam bidang manipulasi data, selalunya perlu untuk mengagregatkan data berdasarkan kriteria tertentu. Satu situasi sedemikian timbul apabila anda perlu mengira pendua dalam senarai objek. LINQ (Language Integrated Query) menawarkan penyelesaian yang elegan untuk tugas ini.

Masalah: Merumuskan Objek Pendua

Pertanyaan Awal:

var q = from x in inventory
                 group x by x into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key.gameName, gameID = g.Key.gameID };

Sementara pertanyaan ini menyediakan kiraan dan nama untuk setiap pendua, ia meninggalkan ID permainan. Untuk menangani perkara ini, kami mesti mengubah suai pendekatan kami.

Penyelesaian: Pengumpulan dan Pemilihan Tersuai

Pengumpulan mengikut Harta Objek:

var q = from x in inventory
                 group x by x.gameName into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key, gameID = g.First().gameID };

Dengan mengumpulkan objek berdasarkan nama permainan mereka harta, kami mengagregatkan objek dengan nama yang sama dengan berkesan.

Memilih Objek Pertama ID:

gameID = g.First().gameID

Memandangkan objek dengan nama yang sama mungkin mempunyai ID yang berbeza, kami menggunakan First() untuk mendapatkan ID objek pertama dalam kumpulan. Ini memastikan kami mempunyai ID untuk setiap nama permainan yang unik.

Contoh Lengkap:

Mengekapkan logik di atas dalam coretan kod yang lengkap:

var inventory = new List<game>();

// ... additional code for populating the inventory list

var q = from x in inventory
                 group x by x.gameName into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key, gameID = g.First().gameID };

// ... additional code for displaying the results

Sekarang, pertanyaan akan memaparkan kiraan, nama permainan dan ID permainan dengan betul untuk setiap nama permainan unik, yang disusun mengikut kiraan tertinggi pendua.

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Mengira dan Merumuskan Objek Pendua dengan Cekap dalam Senarai C#?. 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