例如我有一個這樣的集合
var c1 = new Collection<int>{0,0,2,2,2,3,3,4,4,4,4,5,5,6,6,7};
我想得到這樣的結果
(6,5,4)
uj5u.com熱心網友回復:
你可以做:
c1.Distinct()
.OrderByDescending(x => x)
.Skip(1)
.Take(3)
.ToList()
首先洗掉所有重復項,然后沮喪地排序。Skip(1)以便洗掉最大元素。最后,您可以從其余元素中取出 3 個元素。
uj5u.com熱心網友回復:
在過去,在 LINQ 之前,我們可能會在像您這樣的排序集合上這樣做:
var maxes = new int[4];
var idx = 0;
var max = 0;
foreach(var c in c1)
if(c > max)
max = maxes[(idx )%4] = c;
最后,您將擁有一個包含 4 個最大值的陣列 - 您想要的 3 個,以及您不需要的一個(在 中(idx - 1) % 4)。我不知道我現在是否會使用它,但它比“區分,然后排序,然后跳過然后采用”方法更有效,因為它可以一次性完成作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356562.html
上一篇:C#從IF陳述句中獲取結果
