2013-02-17 51 views
-3

由不同性質的結果遞增排序它,我有一種特殊類型的列表:遞減排序泛型列表,刪除值和意想不到的列表

List<Spitzen_Frequenz_und_Wert> spitzenliste = new List<Spitzen_Frequenz_und_Wert>(); 

//... 

public class Spitzen_Frequenz_und_Wert 
{ 
    public double Frequenz; 
    public double Wert; 
}  

我增加值spitzenliste。它看起來像這樣(舉例):

Frequenz;Wert 
1;0.1 
2;0.8 
3;0.2 
4;0.9 
5;0.2 
6;0.8 

我想通過WERT遞減過濾此列表,所以在我們的例子

Frequenz;Wert 
4;0.9 
2;0.8 
6;0.8 
5;0.2 
3;0.2 
1;0.1 

然後我想只保留第5項

Frequenz;Wert 
4;0.9 
2;0.8 
6;0.8 
5;0.2 
3;0.2 

然後我想通過FREQUENZ

遞增排序
Frequenz;Wert 
2;0.8 
3;0.2 
4;0.9 
5;0.2 
6;0.8 

我的做法

var NachGrößeSortiert = spitzenliste.OrderByDescending(Spitzen_Frequenz_und_Wert => Spitzen_Frequenz_und_Wert.Wert).ToList(); 
NachGrößeSortiert.RemoveRange(5, NachGrößeSortiert.Count - 5); 
var NachFrequenzSortiert = NachGrößeSortiert.OrderBy(Spitzen_Frequenz_und_Wert => Spitzen_Frequenz_und_Wert.Frequenz); 
foreach (var kklm in NachFrequenzSortiert) 
{ 
    db(kklm.Frequenz + ";" + kklm.Wert); 
}  

結果類似

Frequenz;Wert 
1;0.1 
1;0.8 
1;0.2 
... 

有什麼不對?

編輯:公式工作,但spitzenliste有錯誤的價值觀。我糾正它,它的工作。

+0

ListenToYourBody,你不能刪除一個帶有答案的問題,因爲這樣的原因顯然不允許你破壞你自己的問題。 – 2013-02-21 04:31:50

+0

當你阻止我時,我會盡我所能。 – 2013-02-23 04:33:38

回答

0

降序 - 從更大的值排序到一個較小的一個。雖然你的例子顯示,你需要列表從小到大排序。

而且,只要你有沒有需要修改原來的列表,你可以使用Take完成同樣的任務:

var result = spitzenliste.OrderBy(s=>s.Wert) 
         .Take(5) 
         .OrderBy(s=>s.Frequenz) 

上面的例子會產生輸出(Wert = 0.9此處省略):

1: 0,1 
2: 0,8 
3: 0,2 
5: 0,2 
6: 0,8 

而如果你使用OrderByDescending(s=>s.Wert),你會得到

2: 0,8 
3: 0,2 
4: 0,9 
5: 0,2 
6: 0,8 

Wert = 0.1這裏省略

+0

固定........... – 2013-02-18 00:23:42

0

我覺得你混淆了單詞的上升和下降。嘗試顛倒這一點。

它看起來像你在這兩個順序遞增排序。升序是「最小的第一個值,通過順序增加值」。

+0

固定........... – 2013-02-18 00:02:30