Пример #1
0
        protected override void OnCompile()
        {
            if (SyntaxNode.GroupByClause != null)
            {
                Select = SyntaxNode.GroupByClause.CreateGroupBySelector <TSource, TResult>(SyntaxNode.Columns.Aggregates);
            }

            else
            {
                Select = SyntaxNode.Columns.CreateSelector <TSource, TResult>();
            }

            // build up the source and result filters
            if (SyntaxNode.WhereClause != null)
            {
                SourceFilters.Add(list => list.Where(SyntaxNode.WhereClause.CreateEvaluator <TSource>()));
            }

            if (SyntaxNode.OrderByClause != null)
            {
                SourceFilters.Add(SyntaxNode.OrderByClause.CreateEvaluator <TSource>());
            }

            if (SyntaxNode.HavingClause != null)
            {
                ResultFilters.Add(list => list.Where(SyntaxNode.HavingClause.CreateEvaluator <TResult>()));
            }

            if (SyntaxNode.Columns.Distinct)
            {
                ResultFilters.Add(list => list.Distinct(CreateDistinctComparer()));
            }
        }
Пример #2
0
 public void CloseDrivers()
 {
     for (int DeviceCount = 0; DeviceCount < SourceFilters.Count; DeviceCount++)
     {
         FireDTVSourceFilterInfo SourceFilter = SourceFilters.Item(DeviceCount);
         _sourceFilterCollection.RemoveAt(DeviceCount);
     }
 }
Пример #3
0
        public IEnumerable <TResult> Evaluate(IEnumerable <TSource> source)
        {
            Debug.Assert(source != null);
            Debug.Assert(Select != null);

            var result = Select(SourceFilters.Evaluate(source));

            return(ResultFilters.Evaluate(result));
        }