Beispiel #1
0
        public async Task TestAggregateFunc()
        {
            var dr = await CreateDriver();

            var d = await dr.From <MyModel>()
                    .Select(x => AggregateFunc.Max(x.Id))
                    .ToSingleAsync();

            Assert.Equal(3, d);
        }
Beispiel #2
0
        public void FuncAggregateMaxMin()
        {
            var q1 = Builders <MyModel> .Select(x => AggregateFunc.Max(x.Id)).Where(x => x.DateTime > Func.Now());

            Utils.AssertRawQuery(q1, @"SELECT MAX(""id"") FROM model WHERE (datetime) > (NOW())");

            var q2 = Builders <MyModel> .Select(x => AggregateFunc.Min(x.Id)).Where(x => x.DateTime > Func.Now());

            Utils.AssertRawQuery(q2, @"SELECT MIN(""id"") FROM model WHERE (datetime) > (NOW())");
        }
Beispiel #3
0
        public void FuncAggregateSum()
        {
            var q1 = Builders <MyModel> .Select(x => AggregateFunc.Sum(x.ValFloat));

            Utils.AssertRawQuery(q1, @"SELECT SUM(val_f32) FROM model");
        }
Beispiel #4
0
 /// <summary>
 /// 查询极值
 /// </summary>
 /// <typeparam name="C">极值的类型</typeparam>
 /// <param name="predicate">查询条件</param>
 /// <param name="selector">返回值</param>
 /// <param name="aggregateFunc">返回的极值,极大值、极小值</param>
 /// <returns>返回极值</returns>
 public C FindExtreProp <C>(Expression <Func <TEntity, bool> > predicate, Expression <Func <TEntity, C> > selector, AggregateFunc aggregateFunc)
 {
     using (DbContext dbContext = CreateDbContext())
     {
         IQueryable <TEntity> query = dbContext.Set <TEntity>().AsNoTracking().Where(predicate);
         if (aggregateFunc == AggregateFunc.MAX)
         {
             return(query.Max(selector));
         }
         else if (aggregateFunc == AggregateFunc.MIN)
         {
             return(query.Min(selector));
         }
         else
         {
             throw new Exception("枚举只能使用MAX、MIN");
         }
     }
 }