簡體   English   中英

對DataTable C#進行排序

[英]Sorting DataTable C#

我有一個包含相應名稱和分數的dataTable。 我想根據分數對它進行排序。

這是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進行排序時,必須處理DataViewDataTable因此這是一種非常簡單和簡潔的方法來對DataTable實例進行排序。 我不認為簡潔性會因語義清晰而中斷,但如果您認為它令人困惑,請發表評論。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM