Parameterの値を変えて複数回commandを実行したい場合、一度Removeする必要があります。
var cmd = new NpgsqlCommand()
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM test(@day_week)";
cmd.Parameters.AddWithValue("day_week", 0);
using (var reader = cmd.ExecuteReader())
{
reader.Read();
//処理
}
cmd.Parameters.Remove("day_week");
cmd.Parameters.AddWithValue("day_week", 1);
using (var reader = cmd.ExecuteReader())
{
reader.Read();
//処理
}