In my Index Action in my Controller I have this:
public ActionResult Index(string sortOrder)
{
var model;
ViewBag.CitySortParm = String.IsNullOrEmpty(sortOrder) ? "City_desc" : "";
switch (sortOrder)
{
case "City_desc":
model = this.UnitOfWork.AddressRepository.Get().OrderBy(a => a.City);
break;
}
return View(model);
}
This doesn't work, I always get the error: Implicitly-typed local variables must be initialized
Why doesn't this work and how can I fix this?

Why doesn't this work
Two reasons:
var without specifying an initial value. You can't do that - the compiler can't infer the type.model variable when it may not be initialized - if sortOrder isn't City_desc what would you expect to be returned? And what would that type be?and how can I fix this?
That depends on what you want to happen if sortOrder isn't City_desc. Work out what value you'd want to return, and make sure it's returned.
Basically, you can't read from a local variable until it's definitely assigned - in other words, until the compiler can prove (by the rules of C#) that by the time you get there, it will have been assigned a value.
In terms of the implicit typing - are you always going to use the same type for your view? If so, just explicitly declare the type of model, as well as fixing the definite assignment part. If not, I'd consider returning within the switch/case statement - I don't think your model local variable is actually helping you much.
See more on this question at Stackoverflow