【问题标题】:Sorting DataTable C#排序数据表 C#
【发布时间】:2013-07-14 18:11:49
【问题描述】:

我有一个包含对应名称和分数的数据表。我想根据分数降序排序。

这是 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# database winforms sorting datatable


    【解决方案1】:

    你不需要遍历阅读器:

    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    DataTable dt = new DataTable();
    dt.Load(dr);
    

    那么就可以简单的对defaultView进行排序了:

    dt.DefaultView.Sort = "timeScore desc";
    

    【讨论】:

      【解决方案2】:

      当您想对DataTable 进行排序时,必须处理DataView 有点不雅,所以这里有一个真正简单而简洁的方法来对DataTable 进行排序 实例。我认为简洁不会影响语义清晰,但如果您认为它令人困惑,请发表评论。

      dt = new DataView(dt, "", "timeScore DESC",
                           DataViewRowState.CurrentRows).ToTable()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-17
        • 2018-11-26
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2016-02-21
        相关资源
        最近更新 更多