首頁 > 後端開發 > C++ > 如何使用LINQ有效地找到最早出生日期的人?

如何使用LINQ有效地找到最早出生日期的人?

Linda Hamilton
發布: 2025-02-01 03:51:07
原創
600 人瀏覽過

How Can I Efficiently Find the Person with the Earliest Birth Date Using LINQ?

使用LINQ獲取具有極值屬性的對象

LINQ中的Min()Max()方法可以用來查找特定屬性值最小或最大的對象。但是,當處理可為空的屬性時,可能會出現一些額外的考慮。

確定最早出生日期的人

假設您有一個Person對象的列表,其中包含一個可以為空的DateOfBirth屬性。您希望使用LINQ查找最早出生日期的人。

一種方法是使用Min()方法獲取最小的DateOfBirth值:

<code class="language-csharp">var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));</code>
登入後複製

但是,這只會提供日期本身。如果您想要相應的Person對象,您可以進行另一個查詢:

<code class="language-csharp">var firstBorn = People.Single(p => (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);</code>
登入後複製

更高效的解決方案

與其使用兩個查詢,不如使用Aggregate()方法將操作組合起來:

<code class="language-csharp">var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);</code>
登入後複製

這段代碼迭代集合,將當前最小值存儲在curMin中。當遇到DateOfBirth較早的Person對象時,它將替換當前最小值。結果是具有最早出生日期的Person對象。

以上是如何使用LINQ有效地找到最早出生日期的人?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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