Методы и функции в C#?
Есть термины функция, процедура, метод в рамках парадигм программирования, но терминология в C# иная.

В C# нет функций и процедур, есть только методы и делегаты.
Лямбда-выражения, в зависимости от контекста, "под капотом" приводятся к анонимным делегатам с телом или к Func, Predicate, Action.
Все утыкается в объектную модель, которую поддерживает абстрактная машина языка C#. 
Единицей трансляции является класс, и свободных функций в namespace быть не может, так же как и указателей на функцию в принципе - вместо указателей на функцию в C# используются делегаты. Делегат реализован как абстрактный класс, это позволило реализовать типобезопасные ссылки на методы, которые можно складывать и вычитать, позволило удобно реализовать асинхронность.

Делегат указывает только лишь на сигнатуру метода. Но предполагается, что объект, у которого вызывается метод через делегат, является экземпляром класса, который имеет такую же сигнатуру, как и делегат.

В C# нет понятия функции как объекта, функцию нельзя просто так создать. Вообще можно, но прежде чем её использовать, её нужно будет скомпилировать, но она будет в любом случае в каком-то классе, и она будет методом этого класса; и чтобы методы вызвать, сначала надо получить ссылку на экземпляр класса.
Метод - он что-то делает молча и возвращает ничто (void).
Функция же после того как что-то сделала, возвращает свой результат, будь то число, текст или даже целый класс.
В общем различия только философские.