排序。。。。。。。。。。。。。。。。。。。。。

gengchenhui 2010-10-10 05:20:59
这样的排序,有点麻烦:
先要分组(每条新闻有一个groupid),
分完组要根据时间排序,
排完序要根据媒体类型排序(先电视,然后平面,最后网络)
完了要分原创还是转载(原创在前,转载在后)
完了还要网络排序(媒体类型是网络的几个门户网站在前,其它的在后面)
ps:几个门户网站是固定的,域名也可以固定了。
这直接在sqlserver中貌似不好实现。
我看了网上C#可以用泛型,自定义泛型的排序方式,实现ICompare接口?
谁知道这个问题怎么解决?帮忙啊。。。。。。。。。。。。。。。。
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengchenhui 2010-10-11
  • 打赏
  • 举报
回复
10楼能写个小例子吗?我先用我自己的笨方法先看看。。。
phil999 2010-10-10
  • 打赏
  • 举报
回复
先试试:
select * from news
group by groupid
order by 时间, 媒体类型,原创,网络

或者,把数据放入 datatable, 借助 dataview 的 sort 属性来排序

媒体类型,顺序是,电视,平面,网络,这三个词刚好是升序的,如果担心有新的值加进来打乱次序,你可以在查询里用case语句增加一个排序用的辅助字段
打一壶酱油 2010-10-10
  • 打赏
  • 举报
回复
如果你给出具体完整的 要求 可以顺便 给你写一下
打一壶酱油 2010-10-10
  • 打赏
  • 举报
回复
sql 中实现非常简单,没骗你
liuyilin999 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caozhy 的回复:]
实现ICompare接口。

也就是编写一个CompareTo()方法,内部比较传递的2个对象哪个大。
[/Quote]

ICompare接口里面没有CompareTo()方法
kkbac 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gengchenhui 的回复:]

忘了说了,那个新闻时间数据库中是完整的,小时,分钟,秒都有,而排序的时候只要到几日就行了。。。
帮我想想办法?
1楼sql还能实现?特别是最后那个几个固定网站往前排的那个要求。。。
[/Quote]

如果固定了,就用程序排序吧.

你说的几个固定的往前排的那个要求,可以程序里多加一个字段.专为这个排序用.
需要排前面的给这个字段加特定值.0或负数啥的.
排序的时候,就排这个新加的字段.
不知道说清楚没.

比如程序是list<users>

user{
......
publice string website{get;set;}
publice string websiteid{get;set;}
}
gengchenhui 2010-10-10
  • 打赏
  • 举报
回复
3楼,现在需要这不是好几个排序,能实现ICompare一下子实现这个全部功能?
gengchenhui 2010-10-10
  • 打赏
  • 举报
回复
忘了说了,那个新闻时间数据库中是完整的,小时,分钟,秒都有,而排序的时候只要到几日就行了。。。
帮我想想办法?
1楼sql还能实现?特别是最后那个几个固定网站往前排的那个要求。。。
threenewbee 2010-10-10
  • 打赏
  • 举报
回复
实现ICompare接口。

也就是编写一个CompareTo()方法,内部比较传递的2个对象哪个大。
wuyq11 2010-10-10
  • 打赏
  • 举报
回复
List<T>.Sort(IComparer<T>)
public class StudentComparer : IComparer<Student>
{
public enum CompareType
{
Name,
Age,
Grade
}
private CompareType type;
public StudentComparer(CompareType type)
{
this.type = type;
}
public int Compare(Student x, Student y)
{
switch(this.type)
{
case CompareType.Name:
return x.Name.CompareTo(y.Name);
case CompareType.Age:
return x.Age.CompareTo(y.Age);
default:
return x.Grade.CompareTo(y.Grade);
}
}
}
kkbac 2010-10-10
  • 打赏
  • 举报
回复

sql里面最好实现了.

每个字段都设置成int型. 都按照排序大小输入值. 之后一个接一个排序就可以了啊.

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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