I recommend an SQL-batch-statement: Multiple statements, separated by semicolons, in a single SQL-command:
UPDATE myTable SET col1 = @p1 WHERE col2 = @p2;
UPDATE myTable SET col1 = @p3 WHERE col2 = @p4;
UPDATE myTable SET col1 = @p5 WHERE col2 = @p6;
-> A single database-call, no need for a temporary table or stored procedure. It doesn't get (much) faster than this.
If you only want to execute the whole batch if every single statement succeeds then compare the return value of
.ExecuteNonQuery()
to your record count and only commit the transaction if they're equal.