如何编辑数据表中的行

时间:2013-10-28 07:59:53

标签: c# datatable

我创建了一个数据表。它有3列 Product_id Product_name Product_price

    Datatable table= new DataTable("Product");

    table.Columns.Add("Product_id", typeof(int));
    table.Columns.Add("Product_name", typeof(string));
    table.Columns.Add("Product_price", typeof(string));

    table.Rows.Add(1, "abc", "100");
    table.Rows.Add(2, "xyz", "200");

现在我想通过索引找到并更新该行。

说例如

我想将 Product_name 列的值更改为具有 Product_id 列值的“cde”:2。

7 个答案:

答案 0 :(得分:50)

首先,您需要找到id == 2的行,然后更改名称:

foreach(DataRow dr in table.Rows) // search whole table
{
    if(dr["Product_id"] == 2) // if id==2
    {
        dr["Product_name"] = "cde"; //change the name
        //break; break or not depending on you
    }
}

你也可以试试这些解决方案:

table.Rows[1]["Product_name"] = "cde" // not recommended as it selects 2nd row as I know that it has id 2

或者:

DataRow dr = table.Select("Product_id=2").FirstOrDefault(); // finds all rows with id==2 and selects first or null if haven't found any
if(dr != null)
{
    dr["Product_name"] = "cde"; //changes the Product_name
}

答案 1 :(得分:14)

您可以使用

找到该行
DataRow row = table.Select("Product_id=2").FirstOrDefault();

并更新

row["Product_name"] = "cde";

答案 2 :(得分:6)

尝试 SetField 方法:

table.Rows[rowIndex].SetField(column, value);
table.Rows[rowIndex].SetField(columnIndex, value);
table.Rows[rowIndex].SetField(columnName, value);

答案 3 :(得分:5)

如果您的数据集太大,请先按Select()选择所需的行。它将停止进一步循环。

    foreach (DataRow row in selected)
    {
        row["Product_price"] = "<new price>";
    }

然后循环遍历子集并更新

api = tw_oauth('./auth.k')

def limit_handled(cursor):
    while True:
        try:
            yield cursor.next()
        except tweepy.RateLimitError:
            time.sleep(15 * 60)

for tweet in limit_handled(tweepy.Cursor(api.search, q='python until:2016-09-20', count = 20).items()):
    print (tweet.id, tweet.created_at)

答案 4 :(得分:2)

您可以像下面一样遍历DataTable并设置值

foreach(DataTable thisTable in dataSet.Tables)
{
    foreach(DataRow row in thisTable.Rows)
    {
        row["Product_name"] = "cde";
    }
}

OR

thisTable.Rows[1]["Product_name"] = "cde";

希望这有帮助

答案 5 :(得分:2)

试试这个我也不是百分百确定

        for( int i = 0 ;i< dt.Rows.Count; i++)
        {
           If(dt.Rows[i].Product_id == 2)
           {
              dt.Rows[i].Columns["Product_name"].ColumnName = "cde";
           }
        }

答案 6 :(得分:0)

试试这个,

foreach(DataRow rw in dt.Rows)
{
rw["Obj_Amt"] = h.Decrypt(rw["Obj_Amt"].ToString());
dt.AcceptChanges();
rw.SetModified();
}

使用 SetModified() 方法更新数据表值。