排序数据表C#
本文关键字:数据表 排序 | 更新日期: 2023-09-27 18:22:13
我有一个数据表,其中包含相应的名称和分数。我想根据分数降序排列。
这是DB.cs:中的代码
public class DB
{
public DataTable GetData()
{
string spName = "GetTime";
Connection.Open();
SqlCommand command = new SqlCommand(spName, Connection);
command.CommandType = CommandType.StoredProcedure;
SqlDataReader reader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Time");
while (reader.Read())
{
DataRow dr = dt.NewRow();
dr["Name"] = Convert.ToString(reader["name"]);
dr["Time"] = Convert.ToInt32(reader["timeScore"]);
dt.Rows.Add(dr);
}
Connection.Close();
return dt;
}
}
这是Form3.cs
public partial class Form3 : Form
{
private Form2 form2;
public Form3()
{
InitializeComponent();
loadData();
}
public void loadData()
{
form2 = new Form2();
DataTable dt2 = form2.db.GetData();
dgvScore.DataSource = dt2;
}
}
我应该怎么做才能像Java中那样在没有comparer
的情况下对它进行排序?我只想要一个简单的算法答案。感谢您的帮助!
您不需要在读取器上循环:
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
DataTable dt = new DataTable();
dt.Load(dr);
然后您可以简单地对defaultView:进行排序
dt.DefaultView.Sort = "timeScore desc";
当你想对DataTable
进行排序时,必须处理DataView
有点不雅,所以这里有一种简单简洁的方法来对DataTable
实例进行排序。我不认为简洁会破坏语义的清晰度,但如果你认为它令人困惑,请发表评论。
dt = new DataView(dt, "", "timeScore DESC",
DataViewRowState.CurrentRows).ToTable()