/// <summary>
        /// Load the Business Objects from the specific DataStore type that applies to this loader.
        /// In this case these objects are loaded from a <see cref="DataStoreInMemory"/>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="classDef"></param>
        /// <param name="selectQuery"></param>
        /// <returns></returns>
        protected override LoaderResult GetObjectsFromDataStore <T>(IClassDef classDef, ISelectQuery selectQuery)
        {
            Criteria       criteria      = selectQuery.Criteria;
            IOrderCriteria orderCriteria = selectQuery.OrderCriteria;

            IBusinessObjectCollection loadedBos = _dataStore.FindAll(classDef, criteria);

            loadedBos.Sort(orderCriteria);

            int totalNoOfRecords             = -1;
            int totalCountAvailableForPaging = totalNoOfRecords == -1 ? loadedBos.Count : totalNoOfRecords;

            ApplyLimitsToList(selectQuery, loadedBos);
            var loadedBoInfos = new List <LoadedBoInfo>();

            foreach (var loadedBo in loadedBos)
            {
                loadedBoInfos.Add(new LoadedBoInfo {
                    LoadedBo = (IBusinessObject)loadedBo
                });
            }
            return(new LoaderResult
            {
                LoadedBoInfos = loadedBoInfos,
                TotalCountAvailableForPaging = totalCountAvailableForPaging,
                LoadMechanismDescription = Convert.ToString(selectQuery.Criteria),
            });
        }