public virtual async Task Functions_CountDistinct()
        {
            using (var tempTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
            {
                await DataProvider.ExecuteNonQueryAsync(QueryExpression.Insert(
                                                            tempTable.TableName,
                                                            new[] { "Data" },
                                                            new object[] { 10 },
                                                            new object[] { 10 },
                                                            new object[] { 15 },
                                                            new object[] { 20 }
                                                            ));


                using (var queryResult = await DataProvider.ExecuteReaderAsync(
                           QueryExpression.Select(
                               new[] { QueryExpression.CountFunction(
                                           QueryExpression.Distinct(QueryExpression.Column("Data"))
                                           ) },
                               from: QueryExpression.Table(tempTable.TableName)
                               )))
                {
                    Assert.IsTrue(queryResult.HasRows);
                    Assert.IsTrue(await queryResult.ReadAsync());
                    Assert.AreEqual(3, queryResult.GetInt32(0));
                }
            }
        }
Пример #2
0
        public ExpressionResult Convert(MethodInfo methodInfo, MethodCallExpression node,
                                        ExpressionConverter expressionConverter)
        {
            var expressionResult = expressionConverter.Convert(node.Arguments[0]);
            var countExpression  = expressionResult.QueryExpression;

            if (countExpression is TableExpression)
            {
                countExpression = QueryExpression.All();
            }
            return(new ExpressionResult(
                       QueryExpression.CountFunction(countExpression),
                       expressionResult.RequiredJoins
                       ));
        }
 public virtual async Task Functions_Count()
 {
     //  some database engines require the subquery to be aliased
     using (var tempTable = await Select_CreatePopulatedSelectTable())
     {
         using (var queryResult = await DataProvider.ExecuteReaderAsync(
                    QueryExpression.Select(
                        new[] { QueryExpression.CountFunction(QueryExpression.All()) },
                        from: QueryExpression.Table(tempTable.TableName)
                        )))
         {
             Assert.IsTrue(queryResult.HasRows);
             Assert.IsTrue(queryResult.Read());
             Assert.AreEqual(6, queryResult.GetInt32(0));
         }
     }
 }