I think LINQ should be very low level (DAL), and I think it should be wrapped in BLL.
I know that many people like to use the partial availability of LINQ to SQL models, but I think you should have a clear separation of interests (see what I did there?). I think that if you have a business logic, you need to completely separate it from the data access logic.
I think this is difficult to do because you can keep the chain of these LINQ extension methods anywhere you have the System.Linq line in your code. Again, although I believe that LINQ belongs to the definition and should be at the lowest possible level. It also makes TDD / Unit Testing a lot easier when you port using LINQ to BLL.
source share