2012-01-23 21 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

ありがとうございます@クリスシャイン:それはちょうど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; 
} 
関連する問題