下面的循环为什么不能安照myPic[i,3]从小到大的顺序排序?
for(int i = 0; i< 5; i++)
{
for(int k=i+1;k<5;k++)
{
if(Convert.ToDateTime(myPic[i,3]) > Convert.ToDateTime(myPic[k,3]))
{
string t_e_id = myPic[k,0];
string t_path = myPic[k,1];
string t_title = myPic[k,2];
string t_startdate = myPic[k,3];
string t_recurring = myPic[k,4];
myPic[k,0] = myPic[i,0];
myPic[k,1] = myPic[i,1];
myPic[k,2] = myPic[i,2];
myPic[k,3] = myPic[i,3];
myPic[k,4] = myPic[i,4];
myPic[i,0] = t_e_id;
myPic[i,1] = t_path;
myPic[i,2] = t_title;
myPic[i,3] = t_startdate;
myPic[i,4] = t_recurring;
}
}
}

解决方案 »

  1.   

    据我观察for循环没有问题,可能是Convert.ToDateTime()的原因
      

  2.   

    试了一下啊 ,证明如此冒泡没错
    static void Main(string[] args)
            {            int[,] myPic = new int[5, 5];
                for (int j = 0; j < 5; j++)
                {
                    for (int n = 0; n < 5; n++)
                    {
                        myPic[j, n] = n+1-j;
                        Console.Write(myPic[j, n].ToString() +" ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine("-------------------------------");
                    for (int i = 0; i < 5; i++)
                    {
                        for (int k = i + 1; k < 5; k++)
                        {
                            if (myPic[i, 3] >myPic[k, 3])
                            {
                                int t_0 = myPic[k, 0];
                                int t_1 = myPic[k, 1];
                                int t_2 = myPic[k, 2];
                                int t_3 = myPic[k, 3];
                                int t_4 = myPic[k, 4];
                                myPic[k, 0] = myPic[i, 0];
                                myPic[k, 1] = myPic[i, 1];
                                myPic[k, 2] = myPic[i, 2];
                                myPic[k, 3] = myPic[i, 3];
                                myPic[k, 4] = myPic[i, 4];
                                myPic[i, 0] = t_0;
                                myPic[i, 1] = t_1;
                                myPic[i, 2] = t_2;
                                myPic[i, 3] = t_3;
                                myPic[i, 4] = t_4;
                            }
                        }
                    }             for (int jj = 0; jj < 5; jj++)
                {
                    for (int nn = 0; nn < 5; nn++)
                     Console.Write(myPic[jj, nn].ToString() +" ");
                  Console.WriteLine();}
                
                Console.ReadLine();}
            }
      

  3.   

    检查一下myPic[i,3]的数据,可能有的数据残缺,
    比方说 如果将字符串“12/12”转化为日期型时得到的结果是2006/12/12。
    就是说Convert.ToDateTime(myPic[i,3]) > Convert.ToDateTime(myPic[k,3])
    这个条件可能误导你。