我有2个TextBox用于输入2 id和一个TextBox用于输入amount.I想要将此金额添加到我的表中具有第一个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;
}
但只是更新第一行。 我该怎么办?
答案 0 :(得分:1)
您需要else
与第二个循环中的if
一起使用。否则,money
总是被减去。
此外,您只应将money
添加到第一个帐户,如果可以从第二个帐户中减去它。现在你总是添加它。我不想成为负责这个“银行”的人....
答案 1 :(得分:0)
根据帐户类型,只需获得两个帐户类型的1个大列表,然后根据帐户类型进行减法或添加,性能稍微好一点:
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;
}
}
}
这将阻止您两次查看帐户列表以提取两种帐户类型。
答案 2 :(得分:0)
如果要保存数据库中的更改,应创建此代码:
try
{
context.SubmitChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex);
// Provide for exceptions.
}
如果您想查看数据库的更新,则应刷新表单:
this.Refresh();