>使用linq
方法有效地從集合中刪除了重複元素。 但是,當處理複雜的對象(例如,aDistinct()
)時,直接在整個對像上使用List<T>
>時,如果您只需要基於某些屬性的唯一性,則可能不會產生所需的結果。 本文演示瞭如何使用Distinct()
>和GroupBy
。
Select
> 基於特定屬性獲得不同記錄的關鍵是利用Linq的
方法。 該分組要元素共享相同的屬性(或屬性組合),然後允許您從每個組中選擇一個代表。>讓我們用一個GroupBy
進行說明,其中每個
>和List<Person>
的屬性:Person
:Id
Name
<code>Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Name="Test2"</code>
Person
>在此,Id
List<Person> distinctPeople = allPeople .GroupBy(p => p.Id) .Select(g => g.First()) .ToList();
對象。
GroupBy(p => p.Id)
Person
擴展到多個屬性Id
Select(g => g.First())
>
Person
該技術很容易擴展到多個屬性。 由Id
和
> 這個組基於
和的組合,確保了這兩個屬性的唯一性。 同樣,Id
從每個組中挑選一個單一代表。 FavoriteColor
>
List<Person> distinctPeople = allPeople .GroupBy(p => new { p.Id, p.FavoriteColor }) .Select(g => g.First()) .ToList();
Person
Id
這種方法假設您的查詢提供者可以處理潛在的空群體。 如果不能保證這一點,請考慮使用FavoriteColor
而不是Select(g => g.First())
>優雅處理此類情況。
https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11
>以上是如何在復雜對象的特定屬性上使用Linq的不同()方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!