Example #1
0
        public override string ToString()
        {
            var queryParser   = FetchXmlQueryParserLoader.CreateFetchXmlQueryParser();
            var queryModel    = queryParser.GetParsedQuery(_expression);
            var queryMetadata = FetchXmlQueryModelVisitor.GetQueryMetadata(queryModel);
            var fetchXml      = queryMetadata.GetFetchXmlQuery();

            return(fetchXml);
        }
        // Executes a query with a collection result.
        public IEnumerable <T> ExecuteCollection <T>(QueryModel queryModel)
        {
            var queryMetadata = FetchXmlQueryModelVisitor.GetQueryMetadata(queryModel);

            var result       = ExecuteQuery <T>(queryModel, queryMetadata);
            var asEnumerable = (System.Collections.IEnumerable)(result);

            foreach (T rec in asEnumerable)
            {
                yield return(rec);
            }
            ;
        }
        // Executes a query with a scalar result, i.e. a query that ends with a result operator such as Count, Sum, or Average.
        public T ExecuteScalar <T>(QueryModel queryModel)
        {
            var queryMetadata = FetchXmlQueryModelVisitor.GetQueryMetadata(queryModel);

            var result       = ExecuteQuery <T>(queryModel, queryMetadata);
            var asEnumerable = (System.Collections.IEnumerable)(result);

            if (queryMetadata.IsCount)
            {
                int tot = 0;
                foreach (var res in asEnumerable)
                {
                    tot++;
                }
                return((T)(object)tot);
            }

            return(ExecuteCollection <T>(queryModel).FirstOrDefault());
        }