将DataReader的特定列保存为逗号分隔字符串的好方法是什么?
例如,这就是我现在所拥有的:
StringBuilder sb = new StringBuilder();
Database db = DatabaseFactory.CreateDatabase();
using(DbCommand dbcmd = mydb.GetStoredProcCommand("ProcStoredProc")) //No Parameters
{
IDataReader dr = db.ExecuteReader(sqlcmd)
while(dr.Read())
{
sb.AppendFormat("{0},",dr["CODE"]);
}
dr.Dispose();
}
// skipped code to remove the last comma.
string CSVString = sb.ToString();
在此示例中,DataReader不会包含超过10行。
谢谢。
答案 0 :(得分:4)
一些语法糖可能是:
using(var dbcmd = mydb.GetStoredProcCommand("ProcStoredProc"))
using(var dr = db.ExecuteReader(sqlcmd))
var result = string.Join(",", reader.AsEnumerable().Select (r => r["Code"]));
辅助功能
public static IEnumerable<IDataRecord> AsEnumerable(this IDataReader reader)
{
while (reader.Read())
yield return reader;
}