Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#datatable获得所需的输出_C#_Datatable - Fatal编程技术网

如何使用C#datatable获得所需的输出

如何使用C#datatable获得所需的输出,c#,datatable,C#,Datatable,好的,我改变了整个问题。我想生成n*2行datatable,即如果主datatable包含3行,新创建的datatable将包含6行(1行表示True选项,1行表示False选项) 假设我有一个主/主表,如下所示 question_text|right_option -------------|------------ Question 1 | True -------------|------------ Question 2 | False -------------|--

好的,我改变了整个问题。我想生成n*2行datatable,即如果主datatable包含3行,新创建的datatable将包含6行(1行表示True选项,1行表示False选项)

假设我有一个主/主表,如下所示

question_text|right_option
-------------|------------
Question  1  |  True
-------------|------------
Question  2  |  False   
-------------|------------
Question 3   |  True   
所以问题1的正确选项为真,问题2的正确选项为假,以此类推

现在基于此表,我想创建一个如下表。

question_text|option_text * | right_option
-------------|--------------|-------------
question 1   |  True        | True
-------------|--------------|-------------
question 1   | False        |  True
-------------|--------------|-------------
question 2   |  True        |  False
-------------|--------------|-------------
question 2   |  False       |  False     
此处选项_text为硬编码列,其值仅为True和False

表(nx2)如下所示

DataTable dtTrueFalse = Import_To_Grid(FilePath, Extension, "Yes"); // primary table where only right option exist
    for (int i = 0; i < dtTrueFalse.Rows.Count * 2; i++)
    {
         DataRow dr;
         if (i % 2 == 0)
         {
             dr = dtOptions.NewRow();
             dr["Option_Text"] = "True";
          }
          else
          {
             dr = dtOptions.NewRow();
             dr["Option_Text"] = "False";
          }
           dtOptions.Rows.Add(dr);
    }

现在,我想知道如何在右选项列中插入值?请帮助我。

您没有发布数据表的创建

我假设还没有任何列“right_option”,所以首先需要使用

dtTrueFalse.Columns.Add("right_option");
之后,您可以像使用“option_text”一样访问每行中的此列:

dr["right_option"] = "False";
编辑

根据您的评论,以下代码是您真正需要的吗

            // build source datatable
            DataTable dtTrueFalse = new DataTable(); 
            dtTrueFalse.Columns.AddRange(new[] { new DataColumn("question_text"), new DataColumn("Right_Option") });

            // add dummy data
            var dummyRow = dtTrueFalse.NewRow();
            dummyRow["question_text"] = "qst 1";
            dummyRow["Right_Option"] = "False";
            dtTrueFalse.Rows.Add(dummyRow);

            // build final datattable
            DataTable dtOptions = new DataTable();
            dtOptions.Columns.AddRange(new[] {new DataColumn("question_text"), new DataColumn("Right_Option"), new DataColumn("Option_Text")});

            // add rows....
            foreach (DataRow row in dtTrueFalse.Rows)
            {
                var newRowTrue = dtOptions.NewRow();
                newRowTrue["question_text"] = row["question_text"];
                newRowTrue["Right_Option"] = row["Right_Option"];
                newRowTrue["Option_Text"] = "True";
                dtOptions.Rows.Add(newRowTrue);

                var newRowFalse = dtOptions.NewRow();
                newRowFalse["question_text"] = row["question_text"];
                newRowFalse["Right_Option"] = row["Right_Option"];
                newRowFalse["Option_Text"] = "False";
                dtOptions.Rows.Add(newRowFalse);
            }

DataTable dtOptions=新建DataTable();AddRange(new[]{newdatacolumn(“Right_Option”)、newdatacolumn(“Option_Text”)});我没有发布,因为我已经创建了nx2表。我之所以这么做是因为我可以使用tvp轻松地将整个表传递给db。而使用dr[“right_option”]则无法访问列?是否签入调试datatable是否已获取列?并不是说您混淆了我可以访问的DataTables,而是我希望algo说,新创建的表的0,1行映射到主表的第0行,新创建的表的2,3行映射到主表的第1行,依此类推。。
            // build source datatable
            DataTable dtTrueFalse = new DataTable(); 
            dtTrueFalse.Columns.AddRange(new[] { new DataColumn("question_text"), new DataColumn("Right_Option") });

            // add dummy data
            var dummyRow = dtTrueFalse.NewRow();
            dummyRow["question_text"] = "qst 1";
            dummyRow["Right_Option"] = "False";
            dtTrueFalse.Rows.Add(dummyRow);

            // build final datattable
            DataTable dtOptions = new DataTable();
            dtOptions.Columns.AddRange(new[] {new DataColumn("question_text"), new DataColumn("Right_Option"), new DataColumn("Option_Text")});

            // add rows....
            foreach (DataRow row in dtTrueFalse.Rows)
            {
                var newRowTrue = dtOptions.NewRow();
                newRowTrue["question_text"] = row["question_text"];
                newRowTrue["Right_Option"] = row["Right_Option"];
                newRowTrue["Option_Text"] = "True";
                dtOptions.Rows.Add(newRowTrue);

                var newRowFalse = dtOptions.NewRow();
                newRowFalse["question_text"] = row["question_text"];
                newRowFalse["Right_Option"] = row["Right_Option"];
                newRowFalse["Option_Text"] = "False";
                dtOptions.Rows.Add(newRowFalse);
            }