使用 LINQ 更新数据集中的特定单元格
Update specific cell in Dataset with LINQ
我想知道如何更新数据库中的特定井(余额单元格),而我只知道用户帐号。
我不知道它在数据库中的什么位置。我只知道账号存在,因为我是通过它登录的。
为此我需要使用 LINQ,我已经尝试查询数据库以找到余额。虽然,我想将余额更新为特定值,但找不到当前值。
在 SQL 中,我会做类似的事情:
UPDATE UserData
SET Balance = some value in this case an int being passed in
WHERE AccNo = the accountNumber variable stored in a global class
但问题是值存储在数据集中,因为客户端正在离线处理数据。一旦他注销,他的数据集就会在 SQL 数据库中更新。我打算通过从数据库中检索所有内容并执行 update/merge 语句来做到这一点。
知道如何解决这个问题吗?
Linq-To-DataSet
是 Linq-To-Objects
的子集。你可以用它来查询一个DataSet
/DataTable
,但你不能用它来更新行。
因此您可以使用 LINQ 搜索相关 DataRows
,然后使用循环更新它们。
DataTable tblUserData = dataSet.Tables["UserData"];
var rowsWithAccount = from row in tblUserData.AsEnumerable()
where row.Field<string>("AccountNumber") == accountNumber // replace `<string>` with the right type
select row;
foreach(DataRow row in rowsWithAccount)
row.SetField("Balance", newBalance);
更新值后,您可以使用 SqlDataAdapter
更新数据库:
我想知道如何更新数据库中的特定井(余额单元格),而我只知道用户帐号。
我不知道它在数据库中的什么位置。我只知道账号存在,因为我是通过它登录的。
为此我需要使用 LINQ,我已经尝试查询数据库以找到余额。虽然,我想将余额更新为特定值,但找不到当前值。
在 SQL 中,我会做类似的事情:
UPDATE UserData
SET Balance = some value in this case an int being passed in
WHERE AccNo = the accountNumber variable stored in a global class
但问题是值存储在数据集中,因为客户端正在离线处理数据。一旦他注销,他的数据集就会在 SQL 数据库中更新。我打算通过从数据库中检索所有内容并执行 update/merge 语句来做到这一点。
知道如何解决这个问题吗?
Linq-To-DataSet
是 Linq-To-Objects
的子集。你可以用它来查询一个DataSet
/DataTable
,但你不能用它来更新行。
因此您可以使用 LINQ 搜索相关 DataRows
,然后使用循环更新它们。
DataTable tblUserData = dataSet.Tables["UserData"];
var rowsWithAccount = from row in tblUserData.AsEnumerable()
where row.Field<string>("AccountNumber") == accountNumber // replace `<string>` with the right type
select row;
foreach(DataRow row in rowsWithAccount)
row.SetField("Balance", newBalance);
更新值后,您可以使用 SqlDataAdapter
更新数据库: