创建新的C#DataTable列作为现有列的函数

时间:2018-02-15 00:35:36

标签: c#

我从一个通过SQL查询填充的DataTable开始:

DataTable table = new DataTable();
SqlCommand cmd = new SqlCommand();

using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
    sqlQuery = @Query;
    using (cmd = new SqlCommand(sqlQuery, sqlConn))
    {
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(table);
    }
}

我希望在通过数据适配器填充表格后添加新列。 此列需要是另一个现有列的函数。

我想要应用于列中每一行的函数在这里:

Markdig.Markdown.ToHtml("*CONTENT* OF THE COLUMN")

我想要的输出如下:

ID      |    Content                     |     New Column
0       |    *CONTENT* OF THE COLUMN     |     <p><b>CONTENT</b> OF THE COLUMN </p>

我尝试使用以下代码(Multiplying columns in a datatable):

table.Columns.Add("HTML_" + markdown_col, typeof(string), Markdig.Markdown.ToHtml(markdown_col));

但是我收到以下错误:

Server Error in '/' Application.
Syntax error: Missing operand before '<' operator.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SyntaxErrorException: Syntax error: Missing operand before '<' operator.

Source Error: 


Line 132:                        foreach (string markdown_col in MarkDownCols)
Line 133:                        {
Line 134:                            table.Columns.Add("HTML_" + markdown_col, typeof(string), Markdig.Markdown.ToHtml(markdown_col));
Line 135:                        }
Line 136:                    }

如何添加将我的函数应用于DataTable的新列?

1 个答案:

答案 0 :(得分:1)

您只需要添加一次列,之后您可以使用索引来访问它。所以,试着按照你正在做的事情,&#34; markdown_col&#34;是带有markdown的列的名称,&#34; HTML _&#34;是要作为HTML的新列的列名。

// Add column once
table.Columns.Add("HTML_", typeof(string));
// Loop over every row in the table
foreach(DataRow r in table.Rows) {
    r["HTML_"] = Markdig.Markdown.ToHtml(r["markdown_col"]);
}