2012-01-23 3 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; 
}