有什么办法可以用lambda简化此功能吗?

时间:2019-10-30 01:31:01

标签: c# linq lambda

因此,我将尽可能地进行描述。我有一个将标签上的机器分组的winforms应用程序。我有可用的代码,但我想知道是否还有其他更好的方法或可读性更高的代码可以用更少的代码完成相同的工作?

因此,基本上,当计数达到23时,我将根据名为count的列(按位1或0)将其重置为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个以上的lbls,我想知道是否有更简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以将其与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来防止注射,这是通常的良好反射实践。