private ICollection <T> QueryToEntityEnum <T>(Query query) where T : Entity { var assetStateSelection = new AttributeSelection(); IAttributeDefinition assetStateDef; if (query.AssetType.TryGetAttributeDefinition("AssetState", out assetStateDef)) { assetStateSelection.Add(assetStateDef); } var suggestedSelection = GetSuggestedSelection(query.AssetType, typeof(T)); var flattenedSelection = FlattenSelection(query.AssetType, query.Selection); query.Selection = AttributeSelection.Merge(assetStateSelection, suggestedSelection, flattenedSelection); return(AssetEnumToEntityEnum <T>(Services.Retrieve(query).Assets)); }