2012-01-23 4 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; 
} 
관련 문제