>使用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>属性检索不同的对象,请使用以下LINQ查询:
Person
>在此,Id
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => p.Id) .Select(g => g.First()) .ToList();</code>>对象分组。 然后,从每个组中选择第一个元素,有效地为您提供一个
对象。
GroupBy(p => p.Id)
Person
扩展到多个属性Id
Select(g => g.First())
>
Person
该技术很容易扩展到多个属性。 由Id
和
> 这个组基于
和的组合,确保了这两个属性的唯一性。 同样,Id
从每个组中挑选一个单一代表。FavoriteColor
>
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => new { p.Id, p.FavoriteColor }) .Select(g => g.First()) .ToList();</code>重要的考虑因素
Person
Id
这种方法假设您的查询提供者可以处理潜在的空群体。 如果不能保证这一点,请考虑使用FavoriteColor
而不是Select(g => g.First())
>优雅处理此类情况。
https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11
>以上是如何在复杂对象的特定属性上使用Linq的不同()方法?的详细内容。更多信息请关注PHP中文网其他相关文章!