Вдобавок ко всему, я могу перечислить множество причин для извлечения методов и несколько, если таковые имеются, для их объединения.
Кстати, я мог бы предложить изменить язык. « Создание нового метода » звучит как добавление чего-либо к коду и его увеличение и усложнение. Но « извлечение метода » - это то, что действительно происходит, когда вы реорганизуете, как мы надеемся, превосходный дизайн. Предполагая, что вы все равно должны иметь эту функциональность, этот метод всегда был там, он был просто похоронен внутри другого ...
Пытались ли вы проверить, что c.Disciplines не равно нулю, прежде чем выполнять Any на нем? Предположительно дисциплины
не равны нулю, но вы также можете это проверить.
(c.Disciplines != null
&& c.Disciplines.Any(d => disciplines != null
&& disciplines.Contains(d)))
Измените
user.Disciplines.ToArray<Discipline>()
на
user.Disciplines.ToList<Discipline>()
NHibernate понимает .Contains ()
вызывает конкретные объекты List
.