用lambdas:
簡化linq的Distinct
:一廂情願?
linq的
,這可能會感覺過於冗長。 像這個假設的例子一樣,基於Lambda的超載將變得更加簡潔:Distinct
基於lambda的IEqualityComparer
<code class="language-csharp">var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId);</code>
1。 Distinct
和方法:
此方法使用
>基於鍵(例如,)的元素,然後從每個群組中選擇第一個元素。 這有效地過濾了重複。 GroupBy
Select
:GroupBy
CustomerId
<code class="language-csharp">IEnumerable<Customer> distinctCustomers = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
3。 (強烈灰心)基於反射的比較:IEqualityComparer<T>
使用反射來基於屬性比較物件非常效率低且容易出錯。 除非絕對必要,否則避免使用這種方法。
缺乏僅蘭巴達的過載的根本原因:IEqualityComparer<T>
>操作。 為了一致的行為,比較被視為平等的物件也必須產生相同的雜湊程式碼。 透過需要同時實現和
>。。
以上是Lambda表達式可以簡化Linq的獨特方法來進行自定義平等比較嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!