private T ApplySelectExpand <T>(T entity, ODataQuerySettings querySettings) { var result = default(T); bool computeAvailable = IsAvailableODataQueryOption(Compute?.RawValue, AllowedQueryOptions.Compute); bool selectAvailable = IsAvailableODataQueryOption(SelectExpand.RawSelect, AllowedQueryOptions.Select); bool expandAvailable = IsAvailableODataQueryOption(SelectExpand.RawExpand, AllowedQueryOptions.Expand); if (selectAvailable || expandAvailable) { if ((!selectAvailable && SelectExpand.RawSelect != null) || (!expandAvailable && SelectExpand.RawExpand != null)) { SelectExpand = new SelectExpandQueryOption( selectAvailable ? RawValues.Select : null, expandAvailable ? RawValues.Expand : null, SelectExpand.Context); } SelectExpandClause processedClause = SelectExpand.ProcessedSelectExpandClause; SelectExpandQueryOption newSelectExpand = new SelectExpandQueryOption( SelectExpand.RawSelect, SelectExpand.RawExpand, SelectExpand.Context, processedClause); Request.ODataFeature().SelectExpandClause = processedClause; (Request.ODataFeature() as ODataFeature).QueryOptions = this; if (computeAvailable) { newSelectExpand.Compute = Compute; } var type = typeof(T); if (type == typeof(IQueryable)) { result = (T)newSelectExpand.ApplyTo((IQueryable)entity, querySettings); } else if (type == typeof(object)) { result = (T)newSelectExpand.ApplyTo(entity, querySettings); } } return(result); }
private T ApplySelectExpand <T>(T entity, ODataQuerySettings querySettings) { var result = default(T); bool selectAvailable = IsAvailableODataQueryOption(SelectExpand.RawSelect, AllowedQueryOptions.Select); bool expandAvailable = IsAvailableODataQueryOption(SelectExpand.RawExpand, AllowedQueryOptions.Expand); if (selectAvailable || expandAvailable) { if ((!selectAvailable && SelectExpand.RawSelect != null) || (!expandAvailable && SelectExpand.RawExpand != null)) { SelectExpand = new SelectExpandQueryOption( selectAvailable ? RawValues.Select : null, expandAvailable ? RawValues.Expand : null, SelectExpand.Context); } SelectExpand.SearchDerivedTypeWhenAutoExpand = querySettings.SearchDerivedTypeWhenAutoExpand; SelectExpandClause processedClause = SelectExpand.ProcessLevels(); SelectExpandQueryOption newSelectExpand = new SelectExpandQueryOption( SelectExpand.RawSelect, SelectExpand.RawExpand, SelectExpand.Context, processedClause); Request.ODataProperties().SelectExpandClause = processedClause; var type = typeof(T); if (type == typeof(IQueryable)) { result = (T)newSelectExpand.ApplyTo((IQueryable)entity, querySettings, _assembliesResolver); } else if (type == typeof(object)) { result = (T)newSelectExpand.ApplyTo(entity, querySettings, _assembliesResolver); } } return(result); }