Refactoring a collection of if statements that contain 2 arguments. At the moment I have seven if statements that resemble the following code:

if(hit.collider.gameObject.tag == "Colour1" &amp;&amp; start_time &gt; look_at_time)
        {
            new_colour1.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);

            var colums = GameObject.FindGameObjectsWithTag("column");
            foreach( GameObject c in colums)
                c.GetComponent&lt;MeshRenderer&gt;().materials[1].color = new_colour1.orignalMaterial;
        }


        else if(hit.collider.gameObject.tag == "Colour2" &amp;&amp; start_time &gt; look_at_time)
        {

            new_colour2.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
            var colums = GameObject.FindGameObjectsWithTag("column");
            foreach( GameObject c in colums)
                c.GetComponent&lt;MeshRenderer&gt;().materials[1].color = new_colour2.orignalMaterial;
        }


Each statement is roughly 6 lines of code and takes up a lot of space and can be a little tricky to read. What I'm wanting to do is find a way to re factor this so that my code is little less clunky and doesn't take up too much space. 

I had thought about changing my collection of if statements into a switch statement but I discovered that switch statements can't handle two arguments like I have above. If there any other way I can re factor my code but keep the same functionality or am I stuck with my collection of if statements?
We can start looking at what is duplicated.  For example, the only difference between the two blocks of code is the string "Color1" and "Color2" in the if statement, and the variable new_colour1 which is replaced with new_colour2.

From here I'd suggest something like the following:

//This should be declared once - e.g. class level not method level.
var colorDict = new Dictionary&lt;string, NewColorType&gt; 
                    {
                        {"Colour1", new_colour1}, 
                        {"Colour2", new_colour2}
                    };
NewColorType newColor;
if(start_time &gt; look_at_time &amp;&amp; colorDict.TryGetValue(hit.collider.gameObject.tag, out newColor))
{
   newColor.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
   var colums = GameObject.FindGameObjectsWithTag("column");
   foreach( GameObject c in colums)
      c.GetComponent&lt;MeshRenderer&gt;().materials[1].color = newColor.orignalMaterial;
}