Я полагаю, что причина в том, что компилятор не может вывести тип, к которому вы явно приводите данные, даже если компилятор знает, что тип выводится в исходном операторе var.
Вместо этого используйте «как».
listings = Cache["Listings"] as List<FPListing>();
Это также более безопасный способ приведения, поскольку он возвращает NULL (или значение по умолчанию (T)), если он не может быть приведен - вместо создания исключения.