3
  var course = from b in DbModle.courses
                            where b.name == "test"
                            select b;

    DataTable dt = new DataTable();
    DataRow dr;
    dt.Columns.Add(new DataColumn("name", typeof(string)));
    dt.Columns.Add(new DataColumn("id", typeof(int)));
    foreach (var course1 in course_university)
    {
        dr = dt.NewRow();
        dr[0] = course1.name;
        dr[1] = course1.id;
        dt.Rows.Add(dr);
    }

How can I sort DataTable by id?

Christian Hayter
  • 30,581
  • 6
  • 72
  • 99
user1263390
  • 187
  • 3
  • 4
  • 12

4 Answers4

5

Try using this:

dt.DefaultView.Sort = "id";
DataView dv = dt.DefaultView;

foreach (var row in dv) {  
   //. . .
}
ionden
  • 12,536
  • 1
  • 45
  • 37
4

DataTables cannot be sorted directly, but you can create a DataView of the table with a specific sort order.

var view = new DataView(dt) { Sort = "id" };
Christian Hayter
  • 30,581
  • 6
  • 72
  • 99
1

Why not sort in your original query?

var courses = from c in DbModel.courses
              where c.Name == "test"
              orderby c.ID
              select c;

var dt = new DataTable();
dt.Columns.Add(new DataColumn("name", typeof(string)));
dt.Columns.Add(new DataColumn("id", typeof(int)));

foreach (var course in courses)
{
    var dr = dt.NewRow();
    dr[0] = course1.name;
    dr[1] = course1.id;
    dt.Rows.Add(dr);
}
Duane Theriot
  • 2,135
  • 1
  • 13
  • 16
0

If you're using DataTableExtensions and DataRowExtensions:

var view = dt.AsEnumerable().OrderBy(c=>c.Field<int>("id")).AsDataView();
code4life
  • 15,655
  • 7
  • 50
  • 82