For every complex problem, there is a simple, elegant solution. It is also wrong.
Sahil is talking about the pitfalls of DLinq, how a seemingly minor change in the code created a drastically different query which drastically different performance implications. Just to note, this is not unique to DLinq, it's something that exists in NHibernate, or any other O/RM in the market.
O/RM is a leaky abstraction at best, I have said it before, and I will probably say it many times in the future. This mean that you need to know what is going under the hood. The good thing about it is that you have to be under the hood all the time. Most of the time, you can program while being blissfully unaware of what is going on. Just make sure that whatever technology that you use doesn't have the hood welded shut.