2012-10-23 29 views
0

我想將每個Datatable列存儲在一個字符串變量中,以便我可以將所有這些參數傳遞給我的存儲過程。 這將DataTable中將每個DataTable列存儲在字符串中var

DataTable dtOutput; 
dtOutput= Generix.getFeedData(1,ref Connection); 
foreach (DataRow drOutput in dtOutput.Rows) 
{ 
    Console.Write("IST: "); 
    foreach (DataColumn dcOutput in dtOutput.Columns) 
    { 
     Console.Write(Convert.ToString(drOutput[dcOutput]) + "\t"); 
    } 
    Console.WriteLine(); 
} 

去的每一行上面的代碼應打印每列和"\t"作爲分隔符和新行新line.My DataTable包含4列

我的DataTable中打印下列方式:

ATM   Message 

ABC001  Hello 
ABC002  SAGAR 

現在我想在下面的方法:

string sAtm;// Should Print ABC001 
string sMsg;//Should Print Hello 

對於下一行價值sAtmABC002

+0

如果這就是您的代碼「應該」打印什麼,它當前正在打印什麼?這似乎是乍一看有效的代碼... –

+0

存儲在字符串變量列中的每個打印。 – Shaggy

回答

1

對於它的價值,你可以使用LINQ得到所有PARAMS爲字符串。

挑選出你所需要的:

var allAsString = table.AsEnumerable() 
    .Select((r, ri) => new 
    { 
     Row = r, 
     RowNumber = ri, 
     Fields = r.ItemArray.Select((f, i) => new 
     { 
      Col = table.Columns[i], 
      FieldText = string.Format("{0}", f) 
     }) 
    }); 

所以,如果你想例如遍歷所有的行,並得到具體領域:

foreach (var rowInfo in allAsString) 
{ 
    string sAtm = rowInfo.Fields.First(f => f.Col.ColumnName == "ATM").FieldText; 
    string sMsg = rowInfo.Fields.First(f => f.Col.ColumnName == "Message").FieldText; 
} 

記住要添加using system.Linq;


編輯:如果你不是想整個數據表保存在一個字符串:

String strTable = String.Join(
     Environment.NewLine, 
     table.AsEnumerable().Select(r => String.Join("\t", r.ItemArray))); 
+0

&在哪個字符串中存儲數據列? – Shaggy

+0

這會將每一列存儲在一個字符串變量中。我希望將一行中的所有列存儲在diff字符串變量中。 – Shaggy

+0

@SagarDumbre:編輯我的答案,如果你只想一個字符串與所有行的所有字段。如果你想改變其他變量中所有行的所有字段,請使用我的第一種方法,它創建一個'IEnumerable <匿名類型>'。 –

0

使用StringBuilder

StringBuilder sb = new StringBuilder(); 
DataTable dtOutput = Generix.getFeedData(1,ref Connection); 

foreach (DataRow drOutput in dtOutput.Rows) 
{ 
    sb.Append("IST: "); 
    foreach (DataColumn dcOutput in dtOutput.Columns) 
    { 
     sb.Append(Convert.ToString(drOutput[dcOutput]) + "\t"); 
    } 
    sb.AppendLine(); 
} 

你的數據將被存儲在sb所以只要在傳遞到存儲過程sb.ToString()時轉換爲字符串即可。

+0

我不能存儲每個列的值來比較字符串爲一個特定的row.and下一行所有以前的字符串值應該被刪除 – Shaggy

+0

請檢查問題編輯... – Shaggy

+0

@SagarDumbre好吧,是的,你可以。這是否意味着你將在'dtOutput.Rows'的每次迭代中調用你的存儲過程? –

相關問題