Я думаю, что LINQ должен быть очень низкого уровня (DAL), и я думаю, что он должен быть заключен в BLL.
Я знаю, что многие люди любят использовать частичную доступность моделей, которые генерирует LINQ to SQL, но я думаю, что у вас должно быть четкое разделение интересов (посмотрите, что я там делал?). Я думаю, что если вы собираетесь использовать бизнес-логику, ее необходимо полностью отделить от логики доступа к данным.
Я думаю, что это усложняет тот факт, что вы можете продолжать цепочку этих методов расширения LINQ везде, где у вас есть строка с использованием System.Linq в вашем коде. Опять же, хотя я думаю, что LINQ относится к определению и должен быть на самом низком уровне. Это также значительно упрощает TDD / модульное тестирование, когда вы включаете использование LINQ в BLL.