LINQ提供了一種強大而高效的方式來查詢數據。它在根據特定條件選擇對象時特別有用,例如查找特定屬性值最小或最大的對象。
假設您有一個包含Person對象的列表,這些對象具有可為空的DateOfBirth屬性。您可能需要確定出生日期最早的人。
一種方法是使用Min方法查找DateOfBirth屬性的最小值。但是,這只會返回最小日期值,而不是實際的Person對象。
要獲取相應的對象,您可以使用Aggregate方法:
<code class="language-csharp">var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);</code>
Aggregate方法採用兩個參數:初始累加器值和一個函數,該函數將當前累加器和序列中的每個元素組合起來以生成新的累加器值。
在本例中,初始累加器值設置為null。傳遞給Aggregate方法的函數檢查當前累加器值是否為null,或者當前元素的DateOfBirth屬性(用DateTime.MaxValue替換null值)是否早於當前累加器的DateOfBirth屬性。如果為真,則該函數返回當前元素作為新的累加器;否則,它返回當前累加器。
Aggregate的結果是出生日期最早的Person對象。這種更簡潔的方法無需進行第二次查詢來檢索相應對象。
以上是如何使用LINQ找到最早的出生日期的人?的詳細內容。更多資訊請關注PHP中文網其他相關文章!