2011-02-04 4 views
3

내 데이터 테이블은 "ID"라는 열로 구성됩니다. 아니. 이 열의 값 중 일부는 다릅니다. 때때로이 Datatable은 해당 ID 열에서 3 개의 ID를 가져오고 때로는 2를 가져옵니다. 예를 들어, 내 데이터 테이블에 1,2,3,3 개의 값이 있습니다. folows으로 내가 원하는 문자열이 세 가지 값을 넣어 쉼표로 분리하는 것입니다 : -문자열에 데이터 쉼표로 분리 된 값 넣기

string test= "1,2,3"; 

데이터 테이블은이 개 값이있는 경우 다음과 같이 다음 문자열이 있어야한다 : -

string test= "1,2"; 

I을 시도했지만 헛된. 도와주세요. 감사.

편집 : - 2

foreach(DataRow dr in dt.Rows) 
      { 
       string str = str + "," + Convert.ToString(dr("ID")); 

      } 

@Rajeev이 :: this..it을 시도

DataTable dt=new DataTable; 
dt = obj.GetIDs(); 

       for (int i = 0; i < dt.Rows.Count; i++) 
       { 
       string test= "What should be here????"; 
       } 

편집 박사가 변수지만 방법으로 사용 말합니다. 뭐가 문제 야?

+0

때때로 3 개의 행을 가져 오거나 데이터베이스의 한 행에 대한 ID 열의 내용에 "1,2,3"값이 들어 있다는 것을 의미합니까? –

+0

진행중인 코드의 예가 있습니까? – curtisk

+0

@Oyvind :: 예, 가끔은 3 행을 가져오고 때로는 데이터 테이블에 넣을 것을 의미했습니다. – Serenity

답변

4

뭔가 :

DataTable dt = new DataTable(); 

string output; 
for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    output = output + dt.Rows[i]["ID"].ToString(); 
    output += (i < dt.Rows.Count) ? "," : string.Empty; 
} 
+0

'string output;은 내 Visual Studio 2015 IDE에 따라'string output = string.Empty;'또는'= ""'이어야합니다. – Goose

0

정확하게 이해하면 n 행과 1 열 (ID) 인 Datatable이 있습니다.

DT는 데이터 테이블의 경우, 다음 수와 같은 행의 컬렉션을 루프 :

For Each dr as DataRow in dt.Rows 
    str = str + "," + Convert.ToString(dr("ID")) 
Next 

겠습니까 당신을 위해이 일? LINQ를 사용

+0

두 개의 댓글입니다. 1) 질문에 C# 태그가 붙어 있습니다. 2) 이것은 ", 1,2,3"과 같은 응답을 줄 것입니다. –

+0

Plz 내 편집 된 질문을 확인 .. thnx .. 내가 말한 것처럼 구현했지만 문제가있다. – Serenity

+1

@Serenity, dr ("ID") 대신 dr [ "ID"]을 사용하십시오. 내 코드는 VB에서, 미안 해요. –

5

이처럼 수행

var idlist = table.AsEnumerable().Select(r => r.Field<string>("ID")).ToArray(); 
string result = string.Join(",", idlist); 

이 사람은

foreach(DataRow dr in dt.Rows) 
{ 
    string str = str + "," + Convert.ToString(dr["ID"]); 
} 

귀하의 문제는 당신이 dr("ID")를 호출하려고하는 것입니다 귀하의 마지막 예제를 수정하지만 박사는 방법으로하지 않습니다 구문에 의해 암시됩니다. 대신 dr["ID"]을 사용하여 행의 ID 열을 가져옵니다.

그러나,이 마지막 방법은 "1,2,3"결과를 줄 것이다, 그래서 당신은 더 나은 (내 LINQ의 변형 또는 사용)이처럼 다시이 같은

List<string> myIds = new List<string>(); 
foreach(DataRow dr in dt.Rows) 
{ 
    myIds.Add(Convert.ToString(dr["ID"])); 
} 
string result = string.Join(",", myIds); 
+0

코드가 컴파일되지 않으면 +1을 제공합니다. LinQ의 Select는 EnumerableRowCollection을 반환합니다. –

+0

좋아, 내가 연구하고 올바른 linQ는'string result = string.Join (", dtBibliography.AsEnumerable().)을 선택해야합니다 (r => r.Field ("ID ")). ToArray()); '도대체 뭐야, 기분이 좋아, 너의 +1 **; - ** ** –

+0

@AlejoBrz - ToArray를 잊어 버렸다. 생각 나게 해 주셔서 감사합니다 :) –

12

LINQ을 사용하면 단 하나의 라이너가됩니다.

+3

사실 한 줄짜리지만 그 줄은 길다.) –

관련 문제