使用linq更新特定记录的一个字段
本文关键字:一个 字段 更新 linq 记录 使用 | 更新日期: 2023-09-27 18:16:13
我有两个用于输入2 id的TextBox和一个用于输入amount的TextBox。我想把这个金额加到我的第一个id表中的金额上,减去我的第二个id表的金额。这是我的代码:
int money = Int16.Parse(textBox3.Text);
List<account> q_to = (from p in context.accounts where p.id.ToString() == textBox2.Text select p).ToList();
foreach (account p in q_to)
{
p.amount = p.amount + money;
}
List<account> q_from = (from p in context.accounts where p.id.ToString() == textBox1.Text select p).ToList();
foreach (account p in q_from)
{
if (p.amount < money)
{
MessageBox.Show("Account balance is not enough");
}
p.amount = p.amount - money;
}
但只需更新第一行即可。我该怎么办?
您需要一个else
来处理第二个循环中的if
。否则,CCD_ 3总是被减去。
此外,如果可以从第二个帐户中减去money
,则只应将其添加到第一个帐户。现在你总是在添加它。我不想成为这家"银行"的负责人。。。。
在性能方面可能会稍好一些,只需为两种帐户类型获得一个大列表,然后根据帐户类型进行减法或加法:
int money = Int16.Parse(textBox3.Text);
List<account> q_accounts = (from p in context.accounts
where p.id.ToString() == textBox2.Text ||
p.id.ToString() == textBox1.Text
select p).ToList();
foreach (account p in q_accounts)
{
if (p.id.ToString() == textBox2.Text)
{
p.amount = p.amount + money;
}
else
{
if (p.amount < money)
{
MessageBox.Show("Account balance is not enough");
}
else
{
p.amount = p.amount - money;
}
}
}
这将阻止您两次浏览帐户列表以提取两种帐户类型。
如果您想在数据库中保存更改,应该创建此代码:
try
{
context.SubmitChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex);
// Provide for exceptions.
}
如果你想查看数据库的更新,你应该刷新表单:
this.Refresh();