// 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(); }
/// <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(); }
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)); }
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)); }
/// <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)); }