第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用LINQ選擇具有最小或最大屬性值的對象

如何使用LINQ選擇具有最小或最大屬性值的對象

牧羊人nacy 2019-06-14 16:28:41
如何使用LINQ選擇具有最小或最大屬性值的對象我有一個Person對象,它具有Nullable DateOfBirth屬性。是否有一種方法可以使用LINQ查詢具有最早/最小DateOfBirth值的Person對象列表。以下是我開始的想法:var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));NULL DateOfBirth值被設置為DateTime.MaxValue,以便將它們排除在Min考慮范圍之外(假設至少有一個指定的道布)。但是,對我來說,所做的就是將FirstBornDate設置為日期時間值。我想得到的是與之匹配的Person對象。是否需要編寫第二個查詢,如:var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);還是有一種更精簡的方法?
查看完整描述

3 回答

?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) <
    curMin.DateOfBirth ? x : curMin))


查看完整回答
反對 回復 2019-06-14
?
aluckdog

TA貢獻1847條經(jīng)驗 獲得超7個贊

注意:為了完整起見,我包含了這個答案,因為OP沒有提到數(shù)據(jù)源是什么,我們不應該做任何假設。

這個查詢給出了正確的答案,但是可能更慢因為它可能需要排序中的項目People,取決于數(shù)據(jù)結構People是:

var oldest = People.OrderBy(p => p.DateOfBirth ?? DateTime.MaxValue).First();

更新:實際上我不應該把這個解決方案稱為“天真”,但是用戶確實需要知道他在查詢什么。這個解決方案的“慢度”取決于底層數(shù)據(jù)。如果這是一個數(shù)組或者List<T>,則LINQto對象別無選擇,只能在選擇第一項之前先對整個集合進行排序。在這種情況下,它將比建議的其他解決方案慢。但是,如果這是一個LINQtoSQL表,并且DateOfBirth是索引列,則SQLServer將使用索引而不是對所有行進行排序。其他習俗IEnumerable<T>實現(xiàn)也可以使用索引(請參閱i4o:索引LINQ,或對象數(shù)據(jù)庫。db4o)并使此解決方案比Aggregate()MaxBy()/MinBy()它需要迭代整個集合一次。事實上,LINQto對象(理論上)可以在OrderBy()對于排序的集合,如SortedList<T>但據(jù)我所知沒有。


查看完整回答
反對 回復 2019-06-14
  • 3 回答
  • 0 關注
  • 1442 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號