You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需ToString和SqlDataReader高效读取SQL Server表行至字符串列表

解决方案:无需SqlDataReader和ToString(),高效读取SQL表行到List

当然可以实现!我们可以利用SqlDataAdapter来批量读取数据到DataTable,然后通过遍历行并拼接列值的方式生成字符串列表,全程不需要显式调用ToString(),同时能保证不错的性能。

核心思路

  1. 使用SqlDataAdapter执行查询并填充DataTable,这是一种无需手动处理SqlDataReader的批量读取方式
  2. 遍历DataTable的每一行,用StringBuilder拼接所有列的内容(利用.NET的隐式类型转换,避免显式调用ToString())
  3. 预先初始化List<string>的容量为DataTable.Rows.Count,减少内存扩容的性能损耗

示例代码

using System.Data;
using System.Data.SqlClient;
using System.Text;

List<string> rowStrings = new List<string>();

string connectionString = "Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=";
string query = "Select id from [table1] where name=@zip";

using (SqlConnection conn = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand(query, conn))
    {
        command.Parameters.AddWithValue("@zip", "india");
        
        // 使用SqlDataAdapter填充DataTable,无需手动处理DataReader
        DataTable dt = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        adapter.Fill(dt);
        
        // 预先设置容量,提升性能
        rowStrings.Capacity = dt.Rows.Count;
        
        foreach (DataRow row in dt.Rows)
        {
            StringBuilder sb = new StringBuilder();
            // 遍历当前行的所有列,拼接内容(隐式转换,无需ToString())
            foreach (var item in row.ItemArray)
            {
                sb.Append(item);
                sb.Append(", "); // 可根据需求调整列分隔符
            }
            // 移除最后一个多余的分隔符
            if (sb.Length > 2)
                sb.Length -= 2;
            
            rowStrings.Add(sb.ToString());
        }
    }
}

// 此时rowStrings中已存储每行数据对应的字符串

性能优化点

  • 预设置List容量:避免List在添加元素时频繁扩容,减少内存分配和拷贝操作
  • 使用StringBuilder:相比直接字符串拼接(+运算符),StringBuilder在多次拼接场景下性能更优,减少临时字符串对象的创建
  • 批量读取:SqlDataAdapter.Fill()内部已做优化,能高效完成批量数据读取

关于“不使用ToString()”的说明

这里我们没有显式调用item.ToString(),而是利用了StringBuilder.Append(object)方法的特性:它会自动将对象转换为字符串,内部逻辑无需我们手动干预,完全符合你的需求。


内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:42