
使用 LINQ 和 C 計算重複項
在資料操作領域,通常需要根據某些條件聚合資料。當您需要計算物件清單中的重複項時,就會發生這種情況。 LINQ(語言整合查詢)為此任務提供了一個優雅的解決方案。
問題:總結重複物件
初始查詢:
1 2 3 4 5 | 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 };
|
登入後複製
雖然此查詢提供了計數和每個重複項的名稱,但它省略了遊戲 ID。為了解決這個問題,我們必須修改我們的方法。
解決方案:自訂分組和選擇
按物件屬性分組:
1 2 3 4 5 | 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 };
|
登入後複製
根據遊戲名稱對物件進行分組屬性,我們有效地聚合具有相同名稱的對象。
選擇第一個物件的ID:
1 | gameID = g.First().gameID
|
登入後複製
由於同名的物件可能有不同的 ID,因此我們使用 First() 來擷取群組中第一個物件的 ID。這確保了我們為每個唯一的遊戲名稱都有一個 ID。
完整範例:
將上述邏輯封裝在完整的程式碼片段中:
1 2 3 4 5 6 7 8 9 10 11 | var inventory = new List<game>();
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 };
|
登入後複製
現在,查詢將正確顯示每個唯一遊戲名稱的計數、遊戲名稱和遊戲ID,並按最高重複次數排序。
以上是LINQ 如何有效率地統計並彙總 C# 清單中的重複物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!