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.
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.
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.
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.
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!