Functional programming in C# emphasizes: 1) Using data objects instead of primitive types for more specific arguments and results. 2) Writing "honest functions" that always return an expected output given valid inputs without exceptions. 3) Composing values using tuples to aggregate data objects. 4) Avoiding null values with Option<T>. 5) Applying LINQ queries instead of foreach loops.