Implementation of the Query Object and Specification / Criteria patterns in C# for decoupled domain persistence
Example of query object & criteria patterns