2012-01-23 66 views
2

將DataReader的特定列保存爲逗號分隔字符串的好方法是什麼?從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行。

謝謝。

+6

出了什麼問題,你現在有什麼? –

+0

謝謝@Chris Shain:爲了得到10行,似乎有太多的步驟;想知道這是否有一個優雅的方法。謝謝。 – FMFF

+2

看起來很好。你所擁有的大部分功能都是圍繞數據庫管道進行的 - 語法糖可以使這個過程更短,但是它所做的所有工作仍然會發生。 –

回答

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; 
}