2011-02-04 19 views
3

私のデータテーブルは、 "ID"という名前の列で構成されています。いいえ。このDatatableは、そのID列に3つのIDを取得します。時には2になります。 たとえば、私のデータテーブルには1,2,3という3つの値があります。私が欲しいのは、文字列で、以下の3つの値を入れて、folowsとしてカンマでそれらを分離することである: -文字列にデータ化可能なカンマ区切り値を入れよう

string test= "1,2,3"; 

のDataTableが2つの値を持っている場合は、次のように文字列は次のようになります -

string test= "1,2"; 

I試してみましたが無駄でした。助けてください。ありがとう。

編集: -

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

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

編集2

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

      } 

@Rajeev ::しようとしましたthis..itがdrが可変であるが、方法として使用言います。どうしましたか?

+0

たとえば、3つの行がフェッチされる場合や、データベースの1つの行のID列の内容に「1,2,3」などの値が含まれる場合がありますか? –

+0

進行中のコードの例がありますか? – curtisk

+0

@Oyvind ::はい、私はときどき3行がフェッチされ、時には2つのデータテーブルにあることを意味しました。 – 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がDataTableのであれば、あなたの可能性として、行のコレクションをループ、:

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

でしょうあなたのためにこの作品? LINQを使用して

+0

2コメント。 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); 

この1つは

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

あなたの問題はあなたがdr("ID")を呼び出すようにしようとしているということであるあなたの最後の例を修正したが、DRは方法としてではありませんあなたの構文によって暗示されます。代わりにdr["ID"]を使用して、行のID列を取得してください。

方が良い、このようにそれを書き換える(または私のLINQのバリアントを使用する)のでしかし、この最後のアプローチはまた、「1,2,3" の結果を与えるだろう。このような

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"))。あなたの+1 **です---- ** –

+0

@AlejoBrz - そこにToArrayを忘れてしまった。私に思い出させてくれてありがとう: –

12

LINQを使用しているだけのライナー。

+3

本当に1ライナーですが、それは非常に長いラインです;) –

関連する問題