2013-10-03 64 views
0

我有一個情況,我有一個int屬性的對象列表,我需要檢索具有該屬性的最高值的3個對象。 MoreLinq MaxBy函數非常方便查找單個最高,但有沒有一種方法可以使用它來找到最高的3個? (不一定是相同的值)。我目前使用的實現是使用MaxBy找到最高的一個,從列表中移除該對象並再次調用MaxBy等,然後在找到最高3的對象後將對象添加回列表中。只是想着這個實現會讓我感到畏縮,我真的很想找到更好的方法。獲取MoreLinq MaxBy函數返回多個元素

回答

2

在這種情況下,你可以簡單地做

yourResult.OrderByDescending(m => m.YourIntProperty) 
.Take(3); 

現在,這將檢索你3個對象。

所以,如果你有4個對象共享相同的值(這是最大值),1將被跳過。不知道這是你想要的,或者如果它不是問題...

MaxBy也將檢索只有一個元素,如果你有很多元素具有相同的「最大值」。

+0

在這種情況下,「yourResult」是什麼?那是在我使用MaxBy之後還是完全不同的實現? – Fenoec

+0

好吧,它是你的'IEnumerable '(你的對象列表)。我只是使用'OrderByDescending(bla bla)'而不是'MaxBy' –

+0

我讓它比需要的複雜得多;)感謝解決方案,完美地工作。 – Fenoec