在C#中向数据集添加列

3

我尝试执行以下代码:

    static DataSet ds_input;
    static DataSet ds_output;


    ds_output.Tables.Add(new DataTable() );
    ds_output.Tables[0].Columns.Add("column_1", typeof(string));
    ds_output.Tables[0].Columns.Add("column_2", typeof(string));
    ds_output.Tables[0].Columns.Add("column_4", typeof(string));
    ds_output.Tables[0].Columns.Add("column_3", typeof(string));

对我来说似乎很简单,但不知怎么回事它给了我以下错误:

Add(new DataTable())中初始化新实例时:

方法必须有返回类型。

当向ds_output.Tables[0]添加列时:

在类、结构或接口成员声明中无效的标记'.'

更新#1:

我已经按照以下方式在类的开头编写了上面的代码:

namespace Bulk_Verification
{ 
    public partial class Form1 : Form

    {   static DataSet ds_input;
        static DataSet ds_output;
            //ds_output.Tables.Add(new DataTable());
            ds_output.Tables[0].Columns.Add("column_1", typeof(string));
            ds_output.Tables[0].Columns.Add("column_2", typeof(string));
            ds_output.Tables[0].Columns.Add("column_4", typeof(string));
            ds_output.Tables[0].Columns.Add("column_3", typeof(string));

怀疑这可能是问题后,我将这些行移到它们应该被使用的位置之前:

public static DataSet verify(DataSet ds_input)
        {
            ds_output.Tables.Add(new DataTable());
            ds_output.Tables[0].Columns.Add("column_1", typeof(string));
            ds_output.Tables[0].Columns.Add("column_2", typeof(string));
            ds_output.Tables[0].Columns.Add("column_4", typeof(string));
            ds_output.Tables[0].Columns.Add("column_3", typeof(string));

这也是唯一返回一个值(我正在创建的自定义数据集)的方法。现在位置已更改,当我使用调试器运行应用程序时,出现以下编译器错误:ds_output.Tables.Add(new DataTable());

对象引用未设置为对象的实例。


1
静态数据集 ds_input 和 ds_output 的初始化应该像这样,问题就会消失。 - Sriram Sakthivel
你能添加最小化、完整化和可验证的示例吗? - Kiquenet
2个回答

5

我假设你已经拥有了发布的代码。所以编译器会出现“方法必须具有返回类型”和“类、结构或接口成员声明中的无效标记'.'”的错误提示。

你应该创建一个方法并将你的代码放入其中,它可以是实例方法、构造函数、静态方法或静态构造函数。

static DataSet ds_input = new DataSet();
static DataSet ds_output = new DataSet();

private static void InitializeMyDataSet()
{
    ds_output.Tables.Add(new DataTable() );
    ds_output.Tables[0].Columns.Add("column_1", typeof(string));
    ds_output.Tables[0].Columns.Add("column_2", typeof(string));
    ds_output.Tables[0].Columns.Add("column_4", typeof(string));
    ds_output.Tables[0].Columns.Add("column_3", typeof(string));
}

当你需要时,请调用InitializeMyDataSet();

希望这能帮到你。


2
不要啊,检查一下数据集的声明。我觉得你漏掉了new DataSet()这部分。 - Sriram Sakthivel

1
在Asp.net C#中,根据条件添加列并更新数据集中的该列
//Add new column in DataSet//
dsDetails.Tables[0].Columns.Add(new DataColumn ("Your_New_columnname")); 

//Iterate through DataSet//
foreach(DataRow dr in dsDetails.Tables[0].Rows) 
{
    //Store Specific column's value in a variable to check the condition//
    string name = dr.["Name"].ToString(); 
    for(int i = 0; i<= dsDetails.Tables[0].Rows.Count - 1; i++)
    {
        //Check if name value is null or empty then add new column in DataSet//
        if(name == "") 
        {
            //Update value in newly created column//
            dsDetails.Tables[0].Rows[d]["Your_New_columnname"] = "New_value Yes";
        }
        else
        {   
            //Update value in newly created column//
            dsDetails.Tables[0].Rows[d]["Your_New_columnname"] = "New_value No";
        }
    }
}

dsDetails 是数据集的ID


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接