使用LINQ更新数据集中的特定单元格

时间:2015-09-23 08:51:36

标签: c# sql-server linq datatable dataset

当我所知道的是用户帐号时,我很想知道如何更新数据库中的特定井(余额单元)。

我不知道数据库中的位置。我只知道帐号已存在,因为我已通过它登录。

我需要使用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数据库中更新。我打算通过从数据库中检索所有内容并进行更新/合并声明来完成此操作。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

Linq-To-DataSetLinq-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更新数据库:

Updating Data Sources with DataAdapters