(если я вас правильно понял)Можно, наоборот, если вам нужно передать ссылку на код, эквивалентный этому private методу, то передаваемому делегату можно присвоить этот private метод. Наоборот = как вы предлагаете - тоже можно, конечно, но надо смотреть на накладные расходы: делегат - это объект, и если его создавать при каждом вызове, то они могут быть существенными.
Конечно, это годится, только если передаваемая лямбда - это действительно делегат. Может быть иначе: в форме лямбды может передаваться ещё и Expression: это надо смотреть на парметры конкретной функции, в которую вы лямбду передаете. В таком случае делегат, содержащий обычный метод передавать, очевидно, нельзя. И переменную типа delegate AFAIK - тоже. Правда, в этом случае переменная, содержащая лямбду и передаваемая в параметр, должна иметь тип Expression, a делегату нужно присваивать скомпилированное из этой переменной выражение, но так дублирования избежать таки можно (правда, несколько громоздко, и добавляется немного накладных расходов на вызов делегата).
PS Теперь вы понимаете, почему я писал про разные варианты? Если бы вы привели свой код - можно было бы понять, какой из них у вас.
Dyikot, я опять не вижу всей картины: где вы избегаете дублирования? Куда вы ещё эту лямбду передаете или намереваетесь передавать? И почему бы вам не передать вместо лямбды делегат для вашего private метода. Сделайте так
и передавайте NewColumnContextMenuDelegate вместо лямбды, куда ее вам там нужно передавать. В этом случае производительность на однократном создании делегата вы вряд ли потряете. И имейте в виду, что лямбда, если она не статическая - это тоже не бесплатно: нужно к ней создавать объект замыкания.
Даже можно, если вызов редкий, передавать просто NewColumnContextMenu - будут накладные затраты на создание объекта делегата каждый раз (в реальности, скорее - на сборку ненужных объектов делегатов как мусора, само создание обычно выполняется быстро), но, для редкого вызова они малы.
А если лямбду предавать как аргумент больше никуда не нужно - не занимайтесь ерундой: создание делегата, не говоря уж о создании объекта замыкания для нестатической лямбды - это не бесплатно, просто вызов метода без всех этих допрасходов происходит быстрее (не говоря уж о том, что компилятор может вообще код этого метода вставить в код вызывающего метода ("заинлайнить").
PS А вообще, производительность лучше все-таки мерять, если она важна.