Ejemplo n.º 1
0
        // Constructors

        /// <summary>
        /// Initializes a new instance of this class.
        /// </summary>
        /// <param name="source">A value for <see cref="UnaryProvider.Source"/>.</param>
        /// <param name="algorithm">A value for <see cref="Algorithm"/>.</param>
        /// <param name="isInlined">A value for <see cref="IsInlined"/>.</param>
        /// <param name="filterDataSource">A value for <see cref="FilterDataSource"/>.</param>
        /// <param name="resultColumnName">A value for <see cref="ResultColumnName"/>.</param>
        /// <param name="filteredColumns">A value for <see cref="FilteredColumns"/>.</param>
        public IncludeProvider(CompilableProvider source, IncludeAlgorithm algorithm, bool isInlined,
                               Expression <Func <IEnumerable <Tuple> > > filterDataSource, string resultColumnName, IReadOnlyList <int> filteredColumns)
            : base(ProviderType.Include, source)
        {
            ArgumentValidator.EnsureArgumentNotNull(filterDataSource, "filterDataSource");
            ArgumentValidator.EnsureArgumentNotNullOrEmpty(resultColumnName, "resultColumnName");
            ArgumentValidator.EnsureArgumentNotNull(filteredColumns, "filteredColumns");
            Algorithm        = algorithm;
            IsInlined        = isInlined;
            FilterDataSource = filterDataSource;
            ResultColumnName = resultColumnName;

            switch (filteredColumns)
            {
            case int[] columnArray:
                FilteredColumns = Array.AsReadOnly(columnArray);
                break;

            case List <int> columnList:
                FilteredColumns = columnList.AsReadOnly();
                break;

            default:
                FilteredColumns = filteredColumns;
                break;
            }

            Initialize();
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Checks if <paramref name="source"/> value is contained in the specified list of values.
 /// </summary>
 /// <typeparam name="T">Type of value to check.</typeparam>
 /// <param name="source">Source value.</param>
 /// <param name="algorithm">Translation algorithm.</param>
 /// <param name="values">List of values to check.</param>
 /// <returns><see langword="True"/> if <paramref name="source"/> contains in the list of values, otherwise returns <see langword="false"/>.</returns>
 /// <remarks>LINQ translator detects this method and converts it to appropriate <see langword="Contains"/> method.</remarks>
 public static bool In <T>(this T source, IncludeAlgorithm algorithm, IEnumerable <T> values)
 {
     if (values == null)
     {
         return(false);
     }
     return(values.Contains(source));
 }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this class.
        /// </summary>
        /// <param name="source">A value for <see cref="UnaryProvider.Source"/>.</param>
        /// <param name="algorithm">A value for <see cref="Algorithm"/>.</param>
        /// <param name="isInlined">A value for <see cref="IsInlined"/>.</param>
        /// <param name="filterDataSource">A value for <see cref="FilterDataSource"/>.</param>
        /// <param name="resultColumnName">A value for <see cref="ResultColumnName"/>.</param>
        /// <param name="filteredColumns">A value for <see cref="FilteredColumns"/>.</param>
        public IncludeProvider(CompilableProvider source, IncludeAlgorithm algorithm, bool isInlined,
                               Expression <Func <IEnumerable <Tuple> > > filterDataSource, string resultColumnName, int[] filteredColumns)
            : base(ProviderType.Include, source)
        {
            ArgumentValidator.EnsureArgumentNotNull(filterDataSource, "filterDataSource");
            ArgumentValidator.EnsureArgumentNotNullOrEmpty(resultColumnName, "resultColumnName");
            ArgumentValidator.EnsureArgumentNotNull(filteredColumns, "filteredColumns");
            Algorithm            = algorithm;
            IsInlined            = isInlined;
            FilterDataSource     = filterDataSource;
            ResultColumnName     = resultColumnName;
            this.filteredColumns = filteredColumns.Copy();
            Initialize();
        }
Ejemplo n.º 4
0
 public static CompilableProvider Include(this CompilableProvider source,
                                          IncludeAlgorithm algorithm, bool isInlined, Expression <Func <IEnumerable <Tuple> > > filterDataSource,
                                          string resultColumnName, int[] filteredColumns)
 {
     return(new IncludeProvider(source, algorithm, isInlined, filterDataSource, resultColumnName, filteredColumns));
 }
Ejemplo n.º 5
0
 public static CompilableProvider Include(this CompilableProvider source,
                                          IncludeAlgorithm algorithm, Expression <Func <ParameterContext, IEnumerable <Tuple> > > filterDataSource,
                                          string resultColumnName, int[] filteredColumns)
 {
     return(new IncludeProvider(source, algorithm, false, filterDataSource, resultColumnName, filteredColumns));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Checks if <paramref name="source"/> value is contained in the specified list of values.
 /// </summary>
 /// <typeparam name="T">Type of value to check.</typeparam>
 /// <param name="source">Source value.</param>
 /// <param name="algorithm">Translation algorithm.</param>
 /// <param name="values">List of values to check.</param>
 /// <returns><see langword="True"/> if <paramref name="source"/> contains in the list of values, otherwise returns <see langword="false"/>.</returns>
 /// <remarks>LINQ translator detects this method and converts it to appropriate <see langword="Contains"/> method.</remarks>
 public static bool In <T>(this T source, IncludeAlgorithm algorithm, params T[] values)
 {
     return(In(source, algorithm, (IEnumerable <T>)values));
 }