【100分问题】Linq 查询排序

anycall2004 2009-01-16 01:41:13

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 , - ) ,
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
说实话没看明白
anycall2004 2009-01-19
  • 打赏
  • 举报
回复
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,

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

谢谢
anycall2004 2009-01-19
  • 打赏
  • 举报
回复
减号的意思是他们不参与排序 保持原状 呵呵
GTX280 2009-01-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 anycall2004 的回复:]
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,

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

谢谢
[/Quote]
我的意思是这俩明显不一样啊,而你给的例子中无论升序还是降序这两条数据的顺序都一样。。。。
GTX280 2009-01-18
  • 打赏
  • 举报
回复
没看明白楼主意思
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,
升序和降序这俩都一样啊
gyc 2009-01-17
  • 打赏
  • 举报
回复
你 自定义比较器好了

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧