如何将数据表中的值放在双引号中

时间:2013-07-09 11:08:21

标签: c# string

我有一个数据表DT,其中包含3列col1,col2,col3。

我写了下面的代码

Boolean fst = true;
              string q = Convert.ToString('"');
              foreach (DataColumn co in DT.Columns)
              {   

                    if (fst)
                        {
                          colname = colname + q + co.ColumnName+q  ;
                          fst = false;
                          }
                          else
                          colname = colname +","+ q+co.ColumnName+q ;

               }

我想要的输出是colname =“col1”,“col2”,“col3”

但我得到一个输出colname =“\”col1 \“,\”col2 \“,\”col3 \“

如何获得所需的输出?任何指针请....

与此同时我有一个带有4列col1,col2,col3,col4的数据表DT。

str = String.Format(“{0,-30} {0,-30} {0,-30} {0,-30}”,“Col1”,“Col2”,“Col3”,“Col4 “);

如果我们将str写入文件,它将生成输出

Heloo                         Heloo                         Heloo                         Heloo 

我需要以编程方式执行此操作

       string str="";
    Boolean fst = true;
             string q = Convert.ToString('"');
    string frmt="";
              foreach (DataColumn co in DT.Columns)
              {   

                    if (fst)
                        {
                          colname = colname + q + co.ColumnName+q  ;
                          fst = false;
                          }
                          else
                          colname = colname +","+ q+co.ColumnName+q ;

        frmt = frmt +"{0,-30}";

               }

  str= String.Format(frmt, colname);

此处frmt的值=“{0,-30} {0,-30} {0,-30}”; colname的值=“Col1”,“Col2”,“Col3”,“Col4”;

但是,如果我写str文件,它会输出错误。关于如何实现它的任何指示?

5 个答案:

答案 0 :(得分:1)

您的代码正在输出您想要输出的内容。

你在问题​​的评论中已经说过,当你在调试时,你会看到这个;这只是Watch窗口的一个功能,为您转义引号字符。

顺便说一下,您的代码可以通过多种方式更有效地编写;一个例子,这仍然是合理的可读性:

colname = "";
foreach (DataColumn co in DT.Columns) {   
    colname += "\"" + co.ColumnName + "\",";
}
colname = colname.TrimEnd(',');

答案 1 :(得分:0)

使用\

逃脱它们
Boolean fst = true;
string q = Convert.ToString('\"');

foreach (DataColumn co in DT.Columns) {   
    if (fst) {
        colname = colname + q + co.ColumnName + q  ;
        fst = false;
    } else
        colname = colname +","+ q + co.ColumnName + q ;
}

也试试这个

colname = colname + @"" + co.ColumnName + @""  ;

答案 2 :(得分:0)

  string q = string.empty
              foreach (DataColumn co in DT.Columns)
              {   
    q =+ "\"";
                 q = q + co.ColumnName + "\"" + ",";

               }
q = q.remove(q.length - 1 , 1 )

答案 3 :(得分:0)

这有点清洁:

        var tab = new DataTable();

        int row = 0;
        var columnNames = from DataColumn c in tab.Columns
                          let count = row++
                          select string.Format("{0, -30}",c.ColumnName + row);

        string.Join(", ", columnNames);

答案 4 :(得分:0)

您的原始代码是(a)没有生成正确的格式字符串,以及(b)尝试将字符串提供给需要数组的String.Format

var columns = DT.Columns.Select(c => c.ColumnName);

var colname = string.Join(",", columns.Select(c => string.Format("\"{0}\"", c)));
var str = string.Join("", columns.Select(c => string.Format("{0,-30}", string.Format("\"{0}\"", c))));

如果您不需要在str中引用列名,那么它将是

var str = string.Join("", columns.Select(c => string.Format("{0,-30}", c)));