使用LINQ選擇具有最小或最大屬性值的Object
要查找DateOfBirth
屬性值最小的Person
對象,您可以利用LINQ的聚合功能。請考慮以下方法:
<code class="language-csharp">var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);</code>
以下是其工作原理:
Aggregate
方法用於遍歷集合併累積單個結果。
傳遞給Aggregate
的匿名函數採用兩個參數:
curMin
:到目前為止遇到的當前最小DateOfBirth
值(如果尚未找到任何值,則為null)。 x
:正在處理的當前Person
對象。 條件(x.DateOfBirth ?? DateTime.MaxValue)
檢查x
是否具有有效的DateOfBirth
值;如果為null,則將其設置為DateTime.MaxValue
(假設沒有有效的DateOfBirth
值超過此值)。
比較(curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue))
確定哪個對象具有更早的出生日期。
累積過程持續進行,直到評估集合中的所有Person
對象,最終產生DateOfBirth
值最早的Person
對象。
This revised explanation clarifies the comparison logic within the Aggregate method, making the process easier to understand.
以上是如何使用LINQ找到具有最小或最大屬性值的人?的詳細內容。更多資訊請關注PHP中文網其他相關文章!