LLBLGen Pro uses operator overloading for a really cool purpose - to emulate LINQ in .NET 2.0 when it comes to specifying predicates.
With LLBLGen Pro, you can specify predicates for filtering data within the database, which isn't the same as retrieving all the data to the application server and filtering it with a DataSet.
Most projects today are still based on .NET 2.0 because management is too skeptical about the benefits versus the costs of moving to .NET 3.5. That's where LLBLGen Pro helps make up for the loss of features such as DLINQ.
LLBLGen Pro is a really good Data Abstraction Layer and doesn't force you to use it for parts of the system that you don't want to - you don't run into those caching issues where the ORM tries to do everything automagically. If you want to use a cache, you can implement your own solution and that's low coupling... to do that with a caching ORM, each time you make a direct change to the database that the ORM isn't aware of, you'll end up clearing all of the cache.