C# 使用LINQ更新数据集中的特定单元格
当我只知道用户的帐号时,我想知道如何更新数据库(平衡单元)中的特定井 我不知道这会在数据库里的什么地方。我只是知道帐号存在,因为我已经通过它登录了 为此,我需要使用LINQ,并且我已经尝试查询数据库以找到平衡。尽管如此,我希望将余额更新为特定值,而不是查找当前值 在SQL中,我会执行以下操作:C# 使用LINQ更新数据集中的特定单元格,c#,sql-server,linq,datatable,dataset,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 account
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
的子集。您可以使用它来查询数据集
/数据表
,但不能使用它来更新行
因此,您可以使用LINQ搜索相关的数据行
,然后使用循环更新它们
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);
DataTable tblUserData=dataSet.Tables[“UserData”];
var rowsithaccount=来自tblUserData.AsEnumerable()中的行
其中row.Field(“AccountNumber”)==AccountNumber//replace``为正确的类型
选择行;
foreach(行SwitAccount中的数据行)
行设置字段(“平衡”,新平衡);
更新值后,可以使用SqlDataAdapter
更新数据库:
数据集不包含单元格。这是一个数据表的集合。我已经能够在数据集中检索到特定的平衡。这就是为什么我认为它有单元格。谢谢你的回答!这是一个轻微的修改工作,所以我已经接受了它作为答案,虽然附上我的修改。我更改了where row.Field(“AccountNumber”)==要转换的AccountNumber.ToString(row[“AccountNo”])==AccountNumber,并且它工作时没有字符串错误。@Paul:然后使用正确的数据类型(我已经用
//替换为正确的类型对其进行了注释)。我猜是个数字,可能是个整数。然后使用where row.Field(“AccountNumber”)==int.Parse(AccountNumber)
或row.Field(“AccountNumber”).ToString()==AccountNumber