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 async Task <RestItemData> SelectFieldsOnlyAsync(TItem item) { Type dynamicType = GetDynamicRuntimeType(); object dynamicObj = GetDynamicObject(item, dynamicType); if (dynamicObj == null) { return(null); } IQueryable <TItem> items = new[] { item }.AsQueryable(); var replacementProcessor = new FieldReplacementProcessor <TItem>(_fieldReaders); await replacementProcessor.LoadAllAsync(items); replacementProcessor.Replace(dynamicObj, dynamicType); return(new RestItemData(dynamicObj)); }