首頁 > 後端開發 > C++ > 如何在復雜對象的特定屬性上使用Linq的不同()方法?

如何在復雜對象的特定屬性上使用Linq的不同()方法?

Barbara Streisand
發布: 2025-02-02 09:06:10
原創
501 人瀏覽過

How to Use LINQ's Distinct() Method on Specific Properties of Complex Objects?

>使用linq 提取基於特定屬性的唯一記錄

linq's

方法有效地從集合中刪除了重複元素。 但是,當處理複雜的對象(例如,aDistinct())時,直接在整個對像上使用List<T>>時,如果您只需要基於某些屬性的唯一性,則可能不會產生所需的結果。 本文演示瞭如何使用Distinct()>和GroupBySelect

利用Groupby用於基於屬性的唯一性

> 基於特定屬性獲得不同記錄的關鍵是利用Linq的

方法。 該分組要元素共享相同的屬性(或屬性組合),然後允許您從每個組中選擇一個代表。

>讓我們用一個GroupBy進行說明,其中每個

對象具有

>和List<Person>的屬性:PersonId Name

>僅基於
<code>Person1: Id=1, Name="Test1"
Person2: Id=1, Name="Test1"
Person3: Id=2, Name="Test2"</code>
登入後複製
屬性檢索不同的對象,請使用以下LINQ查詢:

Person>在此,Id

按其
List<Person> distinctPeople = allPeople
  .GroupBy(p => p.Id)
  .Select(g => g.First())
  .ToList();
登入後複製
>對象分組。 然後,從每個組中選擇第一個元素,有效地為您提供一個

對象。 GroupBy(p => p.Id)Person擴展到多個屬性IdSelect(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())>優雅處理此類情況。

對於實體框架核心的較舊版本(在第6版之前),可能需要替代方法。 請參閱此堆棧溢出答案,以獲取指南:

https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11

>

以上是如何在復雜對象的特定屬性上使用Linq的不同()方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板