我创建了一个数据表。它有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。
答案 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() 方法更新数据表值。