排序数据表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的情况下对它进行排序?我只想要一个简单的算法答案。感谢您的帮助!

排序数据表C#

您不需要在读取器上循环:

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()