使用LINQ 計算物件列表中的重複項
給定具有唯一屬性的物件列表,確定重複屬性的計數是程式設計中的常見需求。使用 LINQ(語言整合查詢)語法,可以有效地完成此任務。
使用 GroupBy 和 OrderBy
基本方法涉及利用 LINQ 的 GroupBy 和 OrderBy 運算子。 GroupBy 根據指定的屬性將清單劃分為群組,而 OrderBy 根據元素的數量按降序排列群組。
var groupedItems = list.GroupBy(x => x.Property) .Select(x => new { Property = x.Key, Count = x.Count() }); var orderedItems = orderedItems.OrderByDescending(x => x.Count);
此程式碼根據指定的屬性對物件進行分組,計算每個組中的數量組,然後按數量降序對群組進行排序。
自訂物件比較
如果物件缺少直接比較的屬性,可以定義自訂比較器或 lambda 表達式。例如,如果物件具有唯一的 ID 屬性:
var groupedItems = list.GroupBy(x => new { x.Property, x.ID }) .Select(x => new { Property = x.Key.Property, Count = x.Count() });
處理多個屬性
要考慮進行分組的多個屬性,可以使用組合鍵:
var groupedItems = list.GroupBy(x => new { x.Property1, x.Property2 }) .Select(x => new { Property1 = x.Key.Property1, Property2 = x.Key.Property2, Count = x.Count() });
使用擴充實作方法
為了讓程式碼更簡潔,可以使用擴充方法:
public static IEnumerable<T> CountDuplicates<T>(this IEnumerable<T> list, Func<T, object> keySelector) { return list.GroupBy(keySelector) .Select(x => new { Key = x.Key, Count = x.Count() }); }
此擴充方法提供了一種可重複使用的方法來根據指定的鍵選擇器函數來計算重複項。
透過利用 LINQ 的強大功能並利用這些技術,開發人員可以有效地管理和分析物件清單中涉及重複值的資料。
以上是如何使用 LINQ 有效計算物件清單中的重複屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!