List<Dot> dots = new List<Dot>();
            dots.Add(new Dot {  dt=DateTime.Now, Father="1号",Name="1号点",Value=12.121f});
            dots.Add(new Dot { dt = new DateTime(2010,2,3,21,21,12), Father = "2号", Name = "2号点", Value = 12.121f });
            dots.Add(new Dot { dt = new DateTime(2010, 2, 3, 1, 1, 4), Father = "3号", Name = "3号点", Value = 12.121f });
            dots.Add(new Dot { dt = new DateTime(2010, 3, 3, 23, 2, 3), Father = "10号", Name = "10号点", Value = 12.121f });
            dots.Add(new Dot { dt = new DateTime(2010, 4, 1, 21, 21, 6), Father = "11号", Name = "11号点", Value = 12.121f });
            dots.Add(new Dot { dt = new DateTime(2010, 1, 2, 8, 22, 8), Father = "12号", Name = "12号点", Value = 12.121f });
            dots.Add(new Dot { dt = new DateTime(2010, 2, 12, 9, 3, 12), Father = "20号", Name = "20号点", Value = 12.121f});
            dots.Add(new Dot { dt = new DateTime(2010, 7, 13, 11, 6, 11), Father = "21号", Name = "21号点", Value = 12.121f });
            dots.Add(new Dot { dt = DateTime.Now, Father = "21号", Name = "21号点", Value = 12.121f });
            dots.Add(new Dot { dt = DateTime.Now, Father = "2号", Name = "2号点", Value = 12.121f});
            dots.Add(new Dot { dt = DateTime.Now, Father = "10号", Name = "10号点", Value = 12.121f });
            dots.Add(new Dot { dt = DateTime.Now, Father = "11号", Name = "11号点", Value = 12.121f });
             //时间分组
            var ds = from d in dots group d by d.dt.ToString();
            DataTable table = new DataTable();
            table.Columns.Add("1");
            table.Columns.Add("2");
            table.Columns.Add("3");
            table.Columns.Add("4");
            foreach (var g in ds)
            {
                //因为每个Father名称都以数字开始命名,故(ˇˍˇ) 想按数字大小排序,而非按字符串"数字"大小排序。应该怎么实现?
                var ds2 = from d2 in g orderby  d2.Father.Substring(0,2) orderby d2.Name select d2;                foreach (var d in ds2)
                {
                    table.Rows.Add(new object[] {d.dt,d.Father,d.Name,d.Value });
                }
            }
            dataGridView1.DataSource = table.DefaultView;

解决方案 »

  1.   

    substring之后在用int.parse么?是不是这个意思?
      

  2.   


     List<Dot> dots = new List<Dot>();
                dots.Add(new Dot { dt = DateTime.Now, Father = "1号", Name = "1号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 2, 3, 21, 21, 12), Father = "2号", Name = "2号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 2, 3, 1, 1, 4), Father = "3号", Name = "3号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 3, 3, 23, 2, 3), Father = "10号", Name = "10号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 4, 1, 21, 21, 6), Father = "11号", Name = "11号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 1, 2, 8, 22, 8), Father = "12号", Name = "12号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 2, 12, 9, 3, 12), Father = "20号", Name = "20号点", Value = 12.121f });
                dots.Add(new Dot { dt = new DateTime(2010, 7, 13, 11, 6, 11), Father = "21号", Name = "21号点", Value = 12.121f });
                dots.Add(new Dot { dt = DateTime.Now, Father = "21号", Name = "21号点", Value = 12.121f });
                dots.Add(new Dot { dt = DateTime.Now, Father = "2号", Name = "2号点", Value = 12.121f });
                dots.Add(new Dot { dt = DateTime.Now, Father = "10号", Name = "10号点", Value = 12.121f });
                dots.Add(new Dot { dt = DateTime.Now, Father = "11号", Name = "11号点", Value = 12.121f });
                //时间分组
                var ds = from d in dots group d by d.dt.ToString();
                DataTable table = new DataTable();
                table.Columns.Add("1");
                table.Columns.Add("2");
                table.Columns.Add("3");
                table.Columns.Add("4");
                foreach (var g in ds)
                {
                    //因为每个Father名称都以数字开始命名,故(ˇˍˇ) 想按数字大小排序,而非按字符串"数字"大小排序。应该怎么实现?                //这样可以得到你想要的结果
                    var ds2 = from d2 in g orderby Convert.ToInt32((d2.Father.Replace("号", "")) select d2;             
                    foreach (var d in ds2)
                    {
                        table.Rows.Add(new object[] { d.dt, d.Father, d.Name, d.Value });
                    }
                }
      

  3.   

    你把字符串转换成数字  在排序就是了Convert.ToInt32
      

  4.   


    var ds2 = from d2 in g orderby  int.Parse(d2.Father.TrimEnd('号')) orderby  int.Parse(d2.Name.TrimEnd('号','点'))  select d2;
      

  5.   

    参考里面的IComparer接口:http://blog.csdn.net/mngzilin/archive/2010/04/24/5525002.aspx
      

  6.   

    orderby int.Parse(new Regex("[0-9]+").Match(d2.Father).ToString())
      

  7.   

     var ds2 = from d2 in g orderby Convert.ToInt32(d2.Father.Replace("号", "")) select d2;