匿名(ラムダ)関数とデリゲートについて少し読んだことがあります。私は、自分の機能の一部がそれらを利用できる/利用すべき状況に対処していると思います。私の仮定が正しいかどうかはわかりません。
現在のコード:
fDoSave(fGetSqlCheckEmpJob(), fGetSqlUpdateEmpJob(), fGetSqlInsertEmpJob());
fDoSave(fGetSqlCheckEmpPayrl(), fGetSqlUpdateEmpPayrl(), fGetSqlInsertEmpPayrl());
fDoSave(fGetSqlCheckEEO(), fGetSqlUpdateEEO(), fGetSqlInsertEEO());
fDoSave(fGetSqlCheckEmpPhone(), fGetSqlUpdateEmpPhone(), fGetSqlInsertEmpPhone());
fGetSqlCheck...()
- 特定の ID を持つすべての行の count() を返す文字列として SQL ステートメントを
fGetSqlUpdate...()
返します。更新を行う文字列として SQL ステートメントを返します。
fGetSqlInsert...()
挿入を行う文字列として sql ステートメントを返します。
fDoSave()
によって返される値に応じて、更新または挿入のいずれかを行いますfGetCheck...()
fGetSql 関数は次のようになります。
private string fGetSql...()
{
StringBuilder sb = new StringBuilder();
//Create sql statement
return sb.ToString();
}
fDoSave 関数は次のようになります。
private void fDoSave(string sSql_Check, string sSql_Update, sSql_Insert)
{
OracleDataReader dr = ERPDB.sqlGetDataReader(sSql_Check);
while (dr.Read())
{
if(fCheckIfRecrodExists(dr) > 0) //if fGetSqlCheck...() found a row with a specific ID
//do update using sSql_Update
else
//do insert using sSql_Insert
}
}
ラムダ関数またはデリゲートのいずれかを使用してこれを書き直すことはできますか? どのように書き直せばよいでしょうか。