2011-02-04 60 views
3

我的數據表由一列名爲「ID」的列組成。沒有。此列中的值有所不同。有時,此Datatable將在該ID列中獲取3個ID,有時候爲2. 現在,例如,我的數據表有三個值,分別爲1,2,3。我要的是把這三個值中的字符串,並用逗號分隔爲folows: -將數據表逗逗分隔值放入字符串

string test= "1,2,3"; 

如果表具有2倍的值,然後字符串應該如下: -

string test= "1,2"; 

我確實嘗試但徒勞無功。請幫忙。謝謝。

編輯: -

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博士表示是可變但作爲方法。怎麼了?

+0

您的意思是說有時候有三行被提取,或者數據庫中一行的ID列的內容是否包含值「1,2,3」? – 2011-02-04 13:07:17

+0

你有沒有正在進行的代碼示例? – curtisk 2011-02-04 13:07:29

+0

@Oyvind ::是的,我的意思是有時候有3行被提取,有時候2在數據表中。 – Serenity 2011-02-04 13:09:51

回答

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

如果我理解正確,你有一個Datatable具有n行和1列(ID,即)。

如果DT是數據表,那麼你可以通過行集循環,如:

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

將這項工作嗎?

5

使用LINQ,像這樣做:

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); 
12

只用一個班輪使用LINQ

String result = table.AsEnumerable() 
        .Select(row => row["ID"].ToString()) 
        .Aggregate((s1, s2) => String.Concat(s1, "," + s2));