C# 对数据表中的项进行排序

C# 对数据表中的项进行排序,c#,C#,我有一个datatable,其中有一列包含名称。我想加载带有datatable的combobox,这样名称应该按字母顺序排列,例如:名字以a开头。 第二个名称以b开头。我如何对数据表中的数据进行排序。有人能帮忙吗?使用数据视图: DataTable dt; //comes from somewhere... DataView dv = new DataView(dt) dv.Sort = "Name ASC"; foreach(DataRowView drv in dv) //....

我有一个datatable,其中有一列包含名称。我想加载带有datatable的combobox,这样名称应该按字母顺序排列,例如:名字以a开头。 第二个名称以b开头。我如何对数据表中的数据进行排序。有人能帮忙吗?

使用数据视图:

DataTable dt; //comes from somewhere...
DataView dv = new DataView(dt)
dv.Sort = "Name ASC";
foreach(DataRowView drv in dv)
    //....

方法1

    // orderby "FistName" column
    EnumerableRowCollection<DataRow> query = 
                    from order in datatable.AsEnumerable()
                    orderby datatable.Field<string>("FirstName")
                    select datatable;

    DataView view = query.AsDataView();

    // bind to your combobox
    combobox.DataSource = view;
    combobox.DataBind()
参考资料:

您正在寻找的

DataTable MyDataTable;
const string SortByClause = "[SomeCol] ASC";
MyDataTable.DefaultView.Sort = SortByClause ;
使用类型化数据集 在精确数据类型中创建datatable 例如,我创建了一个约会

 DsAppointment dsAppointmentTmp = new DsAppointment();
 DsAppointment dsAppointment = new DsAppointment();
//add all appointment
 dsAppointmentTmp.Appointment.AddAppointmentRow(name,start,end,body)
//use select(filter,sort(name of columns)
DataRow[] rows1 = dsAppointmentTmp.Tables[0].Select(string.Empty, dsAppointmentTmp.Tables[0].Columns[1].ToString());

            foreach (DataRow thisRow in rows1)
            {
                    dsAppointment.Tables[0].Rows.Add(thisRow.ItemArray);

            }
//返回已排序的约会
回复预约

非常简单,这是一个很好的解决方案。我认为应该是DataRowView而不是DataRow:foreach(DataRowView dr in dv)
 DsAppointment dsAppointmentTmp = new DsAppointment();
 DsAppointment dsAppointment = new DsAppointment();
//add all appointment
 dsAppointmentTmp.Appointment.AddAppointmentRow(name,start,end,body)
//use select(filter,sort(name of columns)
DataRow[] rows1 = dsAppointmentTmp.Tables[0].Select(string.Empty, dsAppointmentTmp.Tables[0].Columns[1].ToString());

            foreach (DataRow thisRow in rows1)
            {
                    dsAppointment.Tables[0].Rows.Add(thisRow.ItemArray);

            }