I have One DataTable Like This I can not rearrange this data table as i want. My DataTable is
ID DetailID Name FirstName LastName Middle Year class Line
4000 41001 x y z z y z 1
4000 41002 x y z z y z 1
4000 41003 x y z z y z 1
4000 41004 x y z z y z 1
4000 41005 x y z z y z 1
4000 41006 x y z z y z 1
4001 41007 x y z z y z 2
4001 41008 x y z z y z 2
4001 41009 x y z z y z 2
4001 41010 x y z z y z 2
4001 41011 x y z z y z 2
4002 41012 x y z z y z 3
4002 41013 x y z z y z 3
4002 41014 x y z z y z 3
4002 41015 x y z z y z 3
4002 41016 x y z z y z 3
and i want to arrange this DataTable by Line Column. Like this
ID DetailID Name FirstName LastName Middle Year class Line
4000 41001 x y z z y z 1
4001 41007 x y z z y z 2
4002 41012 x y z z y z 3
4000 41002 x y z z y z 1
4001 41008 x y z z y z 2
4002 41013 x y z z y z 3
4000 41003 x y z z y z 1
4001 41009 x y z z y z 2
4002 41014 x y z z y z 3
4000 41004 x y z z y z 1
4001 41010 x y z z y z 2
4002 41015 x y z z y z 3
4000 41005 x y z z y z 1
4001 41011 x y z z y z 2
4002 41016 x y z z y z 3
4000 41006 x y z z y z 1
so, how can i do this , please help me to arrange this datatable.
I tested it and it works. You can probably try to make it simpler.
dataTable.Columns.Add(new DataColumn("SortOrder", System.Type.GetType("System.Int32")));
var iCount = 0;
var previousLine = 0;
foreach (DataRow row in dataTable.Rows)
{
var Line = Convert.ToInt32(row["Line"]);
if (previousLine != Line)
iCount = 0;
previousLine = Line;
row["SortOrder"] = Line + iCount * 3;
iCount++;
}
dataTable.DefaultView.Sort = "SortOrder Asc";
dataTable = dataTable.DefaultView.ToTable();
Try this
Method 1:
var newDataTable = yourtable.AsEnumerable()
.OrderBy(r=> r.Field<int>("ID"))
.ThenBy(r=> r.Field<int>("DetailID"))
.CopyToDataTable();
Method 2:
DataTable dt= new DataTable();
DataView dv = new DataView(dt);
dv.Sort = "ID, DetailID ASC";
简单点:
dt.DefaultView.Sort = "MyCol ASC";
LINQ是你的朋友
var sortedTable = sourceTable.AsEnumberable().OrderBy(r => r.Field<int>("Line")).Select(r => r).CopyToDataTable();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.