private void BuildSelect(SelectExpandClause selectClause, Expression source, ParameterExpression parameter, OeMetadataLevel metadataLevel, bool navigationNextLink) { foreach (SelectItem selectItem in selectClause.SelectedItems) { var selectItemTranslator = new SelectItemTranslator(_visitor, _path, metadataLevel, navigationNextLink, parameter, source); SelectItemInfo selectItemInfo = selectItem.TranslateWith(selectItemTranslator); if (selectItemInfo == null || SelectItemInfoExists(selectItemInfo.EdmProperty)) { continue; } _selectItemInfos.Add(selectItemInfo); } if (_selectItemInfos.Any(i => i.PropertySelect)) { if (metadataLevel == OeMetadataLevel.Full) { AddKey(parameter); } } else { _selectItemInfos.Insert(0, new SelectItemInfo(parameter)); } }
/// <summary> /// Translate using a <see cref="SelectItemTranslator{T}"/>. /// </summary> /// <typeparam name="T">Type that the translator will return after visiting this item.</typeparam> /// <param name="translator">An implementation of the translator interface.</param> /// <returns>An object whose type is determined by the type parameter of the translator.</returns> /// <exception cref="System.ArgumentNullException">Throws if the input translator is null.</exception> public override T TranslateWith <T>(SelectItemTranslator <T> translator) { return(translator.Translate(this)); }
/// <summary> /// Translate a <see cref="SelectItem"/> using an implemntation of<see cref="SelectItemTranslator{T}"/>. /// </summary> /// <typeparam name="T">Type that the translator will return after visiting this token.</typeparam> /// <param name="translator">An implementation of the translator interface.</param> /// <returns>An object whose type is determined by the type parameter of the translator.</returns> public abstract T TranslateWith <T>(SelectItemTranslator <T> translator);
public override T TranslateWith <T>(SelectItemTranslator <T> translator) { throw new NotImplementedException(); }