利用LINQ對對象列表的特定屬性應用Distinct
LINQ的Distinct()
方法允許您消除集合中的重複元素。但是,當處理複雜對象的列表時,就需要指定哪些屬性用於唯一性。
解決方案:
為此,您可以按所需的屬性對對象進行分組,並從每個組中選擇第一個元素。這將為您提供一個列表,該列表中的對象相對於指定的屬性是唯一的。
示例:
考慮具有Id和Name屬性的Person對象:
<code>Person1:Id=1,Name="Test1" Person2:Id=1,Name="Test1" Person3:Id=2,Name="Test2"</code>
要獲得基於Id屬性的不同人員列表:
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => p.Id) .Select(g => g.First()) .ToList();</code>
這將生成一個僅包含Person1和Person3的列表。
多個屬性:
如果您需要按多個屬性進行分組,可以使用匿名類型:
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => new { p.Id, p.FavoriteColor }) .Select(g => g.First()) .ToList();</code>
注意事項:
FirstOrDefault()
而不是First()
來確保每個組至少有一個元素。 以上是如何使用LINQ根據特定屬性獲取不同的對象?的詳細內容。更多資訊請關注PHP中文網其他相關文章!