首页 > 解决方案 > 有没有办法用 lambda 简化这个函数?

问题描述

所以我会尽量做到描述性。我有一个 winforms 应用程序,它在标签上对机器进行分组。我有工作代码,但我想知道是否有任何其他更好的方法或更易读的代码可以用更少的代码做同样的事情?

因此,基本上当计数达到 23 时,我试图根据名为 count 的列将其重置为 0,该列按位为 1 或 0,当它为 1 时,标签将仅显示计数为 0 的数据。

        if (lbl1.Text == "23")
        {
            string sql = "update tbl_mch_ability set count = 1 where mchNo = 'Spot 1' ";
            con.OpenConnection();
            con.ExecuteQuery(sql);
        }
        else if (lbl2.Text == "23")
        {
            string sql = "update tbl_mch_ability set count = 1 where mchNo = 'Spot 2' ";
            con.OpenConnection();
            con.ExecuteQuery(sql);
        }

这工作正常,但我有超过 10 磅,我想知道是否有更简单的方法来做到这一点?

标签: c#linqlambda

解决方案


您可以将重构与 lambda 一起使用:

Action<Label, string, string> update = (label, trigger, mchNo) =>
{
  if ( label.Text == trigger )
  {
    string sql = $"update tbl_mch_ability set count = 1 where mchNo = '{mchNo}' ";
    con.OpenConnection();
    con.ExecuteQuery(sql);
  }
};

update(lbl1, "23", "Spot 1");
update(lbl2, "23", "Spot 2");

您应该使用 sqlparameters 来防止注入,这是一种很好的常规反射做法。


推荐阅读