You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# DataTable生成n*2行的含True/False选项表格

实现方法:将每行问题拆分为True/False选项行

嘿,我来帮你搞定这个需求!你需要把原始DataTable里的每个问题拆成两行——分别对应True和False选项,同时保留哪个选项是正确的标记对吧?下面我用两种常用的技术栈来实现,你可以根据自己的场景选择。

方法1:Python + Pandas(推荐用于数据分析场景)

Pandas是处理表格数据的利器,用它可以快速实现这个需求,有两种简洁的写法:

写法A:遍历构造行(直观易懂)

import pandas as pd

# 第一步:定义原始DataTable
original_df = pd.DataFrame({
    'question_text': ['Question 1', 'Question 2', 'Question 3'],
    'right_option': [True, False, True]
})

# 第二步:生成扩展后的行列表
expanded_rows = []
for _, row in original_df.iterrows():
    # 添加True选项行,标记是否为正确答案
    expanded_rows.append({
        'question_text': row['question_text'],
        'option': True,
        'is_correct': row['right_option'] == True
    })
    # 添加False选项行,标记是否为正确答案
    expanded_rows.append({
        'question_text': row['question_text'],
        'option': False,
        'is_correct': row['right_option'] == False
    })

# 第三步:转换为新的DataFrame
new_df = pd.DataFrame(expanded_rows)

# 查看结果
print(new_df)

运行后输出的新表格:

question_text  option  is_correct
0    Question 1    True        True
1    Question 1   False       False
2    Question 2    True       False
3    Question 2   False        True
4    Question 3    True        True
5    Question 3   False       False

写法B:交叉合并(更高效,适合大数据量)

用Pandas的cross合并方法,一行完成扩展,代码更简洁:

import pandas as pd

original_df = pd.DataFrame({
    'question_text': ['Question 1', 'Question 2', 'Question 3'],
    'right_option': [True, False, True]
})

# 创建包含True/False的选项表
options = pd.DataFrame({'option': [True, False]})

# 交叉合并原始表和选项表,自动生成每个问题的两个选项行
new_df = original_df.merge(options, how='cross')

# 添加是否正确的标记列
new_df['is_correct'] = new_df['right_option'] == new_df['option']

# 可选:删除原有的right_option列(如果不需要保留)
new_df = new_df.drop('right_option', axis=1)

方法2:C# DataTable(适合.NET场景)

如果是在.NET环境中使用DataTable,可以通过遍历原始行来构造新表:

// 假设原始DataTable已初始化,包含"question_text"和"right_option"列
DataTable originalTable = new DataTable();
originalTable.Columns.Add("question_text", typeof(string));
originalTable.Columns.Add("right_option", typeof(bool));
// 填充原始数据(示例)
originalTable.Rows.Add("Question 1", true);
originalTable.Rows.Add("Question 2", false);
originalTable.Rows.Add("Question 3", true);

// 创建新的DataTable,定义列
DataTable newTable = new DataTable();
newTable.Columns.Add("question_text", typeof(string));
newTable.Columns.Add("option", typeof(bool));
newTable.Columns.Add("is_correct", typeof(bool));

// 遍历原始行,生成两行新数据
foreach (DataRow row in originalTable.Rows)
{
    string question = row["question_text"].ToString();
    bool rightOption = (bool)row["right_option"];
    
    // 添加True选项行
    DataRow trueRow = newTable.NewRow();
    trueRow["question_text"] = question;
    trueRow["option"] = true;
    trueRow["is_correct"] = rightOption == true;
    newTable.Rows.Add(trueRow);
    
    // 添加False选项行
    DataRow falseRow = newTable.NewRow();
    falseRow["question_text"] = question;
    falseRow["option"] = false;
    falseRow["is_correct"] = rightOption == false;
    newTable.Rows.Add(falseRow);
}

这样新的newTable就包含了n*2行数据,每个问题对应True和False两个选项行,同时标记了正确选项。

内容的提问来源于stack exchange,提问作者Babai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:17:52