日期:2014-05-20  浏览次数:20913 次

【100分问题】Linq 查询排序 .

classA 的结构如下
{
int Index;
  string Number; 
}

有个类的集合 Dictionary<int, ClassA> 

{
0 , new ClassA(1 , + ) , 
1 , new ClassA(2 , 3 ) , 
2 , new ClassA(3 , - ) , 
3 , new ClassA(4 , 1 ) , 
4 , new ClassA(5 , - ) , 
5 , new ClassA(6 , + ) , 
6 , new ClassA(7 , 2 ) , 
7 , new ClassA(8 , 3 ) , 
8 , new ClassA(9 , 1 ) ,
9 , new ClassA(10 , - ) ,
}

+ 的位置永远不动
- 放在同组一起按照index排序 
其他的按照number排序

如何通过一句linq语句达到这个目的呢?

例如上面升序结果

0 , new ClassA(1 , + ) , 
3 , new ClassA(4 , 1 ) ,
1 , new ClassA(2 , 3 ) , 
2 , new ClassA(3 , - ) , 
  4 , new ClassA(5 , - ) , 
5 , new ClassA(6 , + ) , 
8 , new ClassA(9 , 1 ) ,
6 , new ClassA(7 , 2 ) , 
7 , new ClassA(8 , 3 ) , 
9 , new ClassA(10 , - ) ,
降序结果
0 , new ClassA(1 , + ) , 
1 , new ClassA(2 , 3 ) , 
3 , new ClassA(4 , 1 ) ,
2 , new ClassA(3 , - ) , 
  4 , new ClassA(5 , - ) , 
5 , new ClassA(6 , + ) , 
7 , new ClassA(8 , 3 ) , 
6 , new ClassA(7 , 2 ) , 
8 , new ClassA(9 , 1 ) ,
9 , new ClassA(10 , - ) ,

------解决方案--------------------
没看明白楼主意思
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) , 
升序和降序这俩都一样啊
------解决方案--------------------
探讨
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,

这两个不一样的
试下就知道了
另外我现在已经实现了
不过效率可能不好
所以想看看有没有效率更高的算法

谢谢