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));
 }
Example #3
0
 /// <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);
Example #4
0
 public override T TranslateWith <T>(SelectItemTranslator <T> translator)
 {
     throw new NotImplementedException();
 }