Sort data by field

  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?

+3


source to share


4 answers


Data tables cannot be sorted directly, but you can create DataView tables with a specific sort order.



var view = new DataView(dt) { Sort = "id" };

      

+4


source


Try using this:



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

foreach (var row in dv) {  
   //. . .
}

      

+4


source


Why not sort the 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);
}

      

+1


source


If you are using DataTableExtensions

and DataRowExtensions

:

var view = dt.AsEnumerable().OrderBy(c=>c.Field<int>("id")).AsDataView();

      

0


source







All Articles