本问题主要是解决歌曲按点击量周排行问题:
歌曲名如:2,3,4,5,6
该歌曲一周的点击量是:300,350,333,570,200
注:歌曲点击量我是在页面程序中才统计出来的,所以SQL语句是解决不了的,
我想过在SQL语中采用临时表进行排列,但是没有试成功。
我又试过把数据绑定到DataGrid中,利用DataGrid的排序属性,但也没有成功,
想过用二维数组,
但是到动态插入二维数组第一组数据时就卡住了。头疼,各位大虾帮帮忙。
我的代码如下:(该代码没有达到排列效果,有解决办法的指点一下)
private void BindSongListForWeek(string DateTime)
{
           int i=0;
string [,] array = new string[i,i];
CSong xS = new CSong();
CSongCollection xList;
CSongCollection yList;
DataTable dt = new DataTable();
DataRow dr;
xList = xS.SongHitsListFromWeekGroupbySongID(System.DateTime.Now.AddDays(-1).ToShortDateString());
if(xList.Count>0)
{
dt.Columns.Add("SongID");
dt.Columns.Add("SongName");
dt.Columns.Add("WeekHits");
dt.Columns.Add("TooSongName");
for(i=0;i<xList.Count;i++)
{dr = dt.NewRow();
yList = xS.SongHitsListFromWeek(DateTime,xList[i].ID);
int Hits = 0 ;
if(yList.Count>0)
{for(int j=0;j<yList.Count;j++)
{Hits = Hits+yList[j].Hit;}//iArray[i,i] = xList[i].ID+Hits;}
//array[i,i] = xList[i].ID.ToString()+Hits.ToString();
dr["SongID"] = xList[i].ID;
dr["WeekHits"] = Hits;
xS.ID = xList[i].ID;
xS.Load();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if(xS.SongName.Length > 12)
{
sb.Append(xS.SongName.Substring(0,11));
sb.Append("…");
dr["SongName"] = sb.ToString();
}
else
{
dr["SongName"] = xS.SongName;
}dr["TooSongName"] = xS.SongName;dt.Rows.Add(dr);
}
}
//dt.Rows.Count
DataView dv=new DataView();
dv = dt.DefaultView;
//dv.Sort ="WeekHits"+" "+this.dlTodayorWeek.Attributes["SortDirection"]; 
dv.Sort = "WeekHits DESC";
this.dlTodayorWeek.DataSource = dv;
this.dlTodayorWeek.DataBind();
}

解决方案 »

  1.   

    注:歌曲点击量我是在页面程序中才统计出来的,所以SQL语句是解决不了的,
    ----------------
    既然你的程序有涉及到数据库为什么不写进数据库里面?
    点击的时候写入总量,周总量,时间。
    那么一切都简单的搞定。
      

  2.   

    歌曲点击量我是在页面程序中才统计出来的,所以SQL语句是解决不了的,这个不对吧,能得到数据就能存入数据库。
    存入数据,作查询应该是很容易实现的。如果放在DataSet或DataTable这一层也是比较容易实现的。
    DataView.Sort属性进行实现。