private static async Task <List <object> > ExecuteWithReplacementsAsync(FieldReplacementProcessor <TItem> replacementProcessor, IQueryable dynamicQueryable, ForEachAsyncDelegate <object> forEachAsync)
        {
            var dynamicType   = dynamicQueryable.ElementType;
            var returnObjects = new List <object>();

            if (dynamicQueryable.IsInMemory())
            {
                await ItemQueryHelper.DefaultForEachAsync(dynamicQueryable, AddObjectToList);
            }
            else
            {
                await forEachAsync(dynamicQueryable.AsObjects(), AddObjectToList);
            }

            void AddObjectToList(object dynamicObj)
            {
                if (dynamicObj != null)
                {
                    replacementProcessor.Replace(dynamicObj, dynamicType);
                }

                returnObjects.Add(dynamicObj);
            }

            return(returnObjects);
        }
 public Task ForEachAsync <T>(IQueryable <T> query, Action <T> action)
 {
     return(ItemQueryHelper.DefaultForEachAsync(query, action));
 }