使用 Lambda 表達式自定義 Distinct() 操作
在處理可枚舉對象時,Distinct()
方法提供了一種直接去除重複值的方法。但是,對於需要自定義相等性檢查的對象,現有的 Distinct()
重載方法並不理想。
人們可能期望有一個重載方法接受 Lambda 表達式來定義相等性,例如:
<code class="language-c#">var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId);</code>
然而,這樣的重載方法在原生方法中並不存在。相反,必須使用 IEqualityComparer<T>
實例,這可能會冗長且繁瑣。
替代方案
為了實現所需的功能,可以結合使用 GroupBy()
和 Select()
方法:
<code class="language-c#">IEnumerable<Customer> filteredList = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
這種方法根據 CustomerId
字段標識和分組項目。然後,First()
方法從每個組中選擇第一個項目,有效地去除了重複項。
以上是如何將lambda表達式用於枚舉對象的自定義不同()操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!