gpt4 book ai didi

c# - 将一定数量的行从 DataReader 加载到数据表中

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:13 24 4
gpt4 key购买 nike

我有一个从 TSql View 加载 DataGridView 的进程。我的用户之间一直在争论是返回所有行还是返回某个数字(我在后一个阵营:TOP 100)。我决定最好的方法是根据用户设置的字段动态返回行数。我原以为这是一项相当微不足道的任务。我期望加载一个带有 while 循环和读取函数的数据表,并在一定数量的行处停止。这可能吗?保留下面的代码,但将数据表 (dt) 减少到所需的行数,然后从那里加载 datagridview 是否有很大的好处?

         public void Load_DGV(DataGridView dgv, string sqlx)
{
DateTime d1 = DateTime.Now;
SqlCommand command = new SqlCommand(sqlx.ToString());

SqlConnection connection = new SqlConnection(Properties.Settings.Default._CONNSTRING);
command.Connection = connection;

bool Success = true;
DataTable dt = new DataTable();
connection.Open();
SqlDataReader reader = command.ExecuteReader();
dt.Load(command.ExecuteReader());

connection.Close();

dgv.DataSource = null;
dgv.DataSource = dt;
Color_DGV(dgvProposal);

dgvProposal.Sort(dgvProposal.Columns[m_Current_Menu_Item.OrderByCol], ListSortDirection.Descending);
DateTime d2 = DateTime.Now;
Console.WriteLine("Execution of " + sqlx + " took " + (d2 - d1).Seconds.ToString() + "s. ");
}

最佳答案

如果您进行更改,您将获得更好的性能,因此您可以传递一个参数来指示要返回的 TOP 行数。

否则,一旦将所有记录加载到新的 DataTable 中,就可以使用 LINQ TAKE 前 xx 行,并将其分配给 DataSource

dataGridView1.DataSource = dt.Rows.Cast<DataRow>().Take(100).CopyToDataTable();

如果您使用 reader.Read() 遍历前 100 条记录并手动填充 DataTable,您可能会节省一些处理时间。至少这样你就不会用数千条记录填充 DataTable 只是为了丢弃它并创建另一个,更小的 DataTable

关于c# - 将一定数量的行从 DataReader 加载到数据表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28030040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com