Compared with SQL it's definitely imperative. It's definitely using higher-level abstractions than a `for` loop, but it still specifies the order of operations.
In C#, the functions being passed could be passed as analyzable syntax trees, and the implementation could actually be in SQL.
Sequencing is a fundamental computing construct. Data flow graphs allow you to specify sequences, just as shell pipelines do. SQL has sequentiality built-in with nested queries. None of these are imperative environments.
Yes, although not necessarily all of them. Some languages will process this eagerly, some lazily.