0

各データテーブル列を文字列変数に格納して、これらすべてのパラメーターをストアドプロシージャに渡すことができるようにします。これは、DataTableの各行で行われます

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"出力し、新しい行に区切り文字と新しい行を追加する必要があります。私のデータテーブルには4つの列が含まれています

私のDataTableは次のように印刷されます。

ATM         Message

ABC001      Hello
ABC002      SAGAR

今私は次のようにしたい:

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

次の行の値は次のようにsAtmなりますABC002

4

2 に答える 2

1

その価値については、Linqを使用してすべてのパラメーターを文字列として取得できます。

必要なものを選んでください:

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;


編集:代わりにDataTable全体を1つの文字列に保存する場合:

String strTable = String.Join(
        Environment.NewLine, 
        table.AsEnumerable().Select(r => String.Join("\t", r.ItemArray)));
于 2012-10-23T14:36:02.017 に答える
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()です。

于 2012-10-23T14:41:47.317 に答える