Динамическая переменная
и переменная var могут хранить значения любого типа, но это требуется для инициализации 'var' во время объявления.
Компилятор не имеет никакой информации о «динамическом» типе переменной.
var безопасен для компилятора, т.е. компилятор имеет всю информацию о сохраненном значении, поэтому он не вызывает проблем во время выполнения.
Динамический тип может передаваться как аргумент функции, и функция также может возвращать его.
Тип var не может быть передан в качестве аргумента функции, а функция не может возвращать тип объекта. Переменная этого типа может работать в области, где она определена.
В случае динамического приведения не требуется, но вам необходимо знать свойство и методы, относящиеся к хранимому типу, тогда как для var нет необходимости в приведении, поскольку компилятор имеет всю информацию для выполнения операции.
dynamic: полезно при кодировании с использованием отражения или поддержки динамического языка или с объектами COM, потому что нам требуется писать меньше кода.
var: полезно при получении результата от запросов linq. В 3.5 Framework он вводит для поддержки функции linq.
Ссылка: Консультациябабхи