2013-02-17 17 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