示例#1
0
        public static void GroupQueryTest()
        {
            MsSqlContext context = new MsSqlContext(DbHelper.ConnectionString);

            object ret = null;

            var q = context.Query <User>();

            var r = q.GroupBy(a => a.Id).Having(a => a.Id > 1).Select(a => new { a.Id, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Id), Max = AggregateFunctions.Max(a.Id), Min = AggregateFunctions.Min(a.Id), Avg = AggregateFunctions.Average(a.Id) }).ToList();

            q.GroupBy(a => a.Age).Having(a => a.Age > 1).Select(a => new { a.Age, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Avg = AggregateFunctions.Average(a.Age) }).ToList();

            var r1 = q.GroupBy(a => a.Age).Having(a => AggregateFunctions.Count() > 0).Select(a => new { a.Age, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Avg = AggregateFunctions.Average(a.Age) }).ToList();

            var g = q.GroupBy(a => a.Gender);
            //g = g.ThenBy(a => a.Name);
            //g = g.Having(a => a.Id > 0);
            //g = g.Having(a => a.Name.Length > 0);
            var gq = g.Select(a => new { Count = AggregateFunctions.Count() });

            //gq = gq.Skip(1);
            //gq = gq.Take(100);
            //gq = gq.Where(a => a > -1);

            ret = gq.ToList();
            var c = gq.Count();

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#2
0
        protected void PageInit()
        {
            try
            {
                if (userInfo == null)
                {
                    MessageBox.Show(this, "system_alert", "用户未绑定");
                    return;
                }
                else
                {
                    if (hotelInfo == null)
                    {
                        MessageBox.Show(this, "system_alert", "酒店信息异常");
                        return;
                    }
                    else
                    {
                        var layout = context.Query <CabinetLayout>().FirstOrDefault(o => o.hotel_id == hotelInfo.id);
                        if (layout == null)
                        {
                            MessageBox.Show(this, "system_alert", "模板商品未配置");
                            return;
                        }
                        var productCount = layout.products.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Count();

                        var roomList = context.Query <Cabinet>().Where(o => o.hotel == hotelInfo.id)
                                       .LeftJoin <Cell>((a, b) => a.mac.Equals(b.mac))
                                       .Where((a, b) => b.part == 0 && b.product_id == null && b.pos <= productCount)
                                       .Select((a, b) => new
                        {
                            a.mac,
                            a.online,
                            a.room
                        }).GroupBy(o => o.mac)
                                       .Select(o => new { mac = AggregateFunctions.Max(o.mac), online = AggregateFunctions.Max(o.online), room = AggregateFunctions.Max(o.room) }).ToList();
                        rooms_rp.DataSource = roomList;
                        rooms_rp.DataBind();
                        if (roomList.Count() > 0)
                        {
                            roomSelectDiv.Visible = true;
                            empty_div.Visible     = false;
                        }
                        else
                        {
                            roomSelectDiv.Visible = false;
                            empty_div.Visible     = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "system_alert", "数据异常");
            }
        }
示例#3
0
        public static void AggregateQuery()
        {
            IQuery <User> q = context.Query <User>();

            q.Select(a => AggregateFunctions.Count()).First();

            /*
             * SELECT COUNT(1) AS `C` FROM `Users` AS `Users` LIMIT 0,1
             */

            q.Select(a => new { Count = AggregateFunctions.Count(), LongCount = AggregateFunctions.LongCount(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Average = AggregateFunctions.Average(a.Age) }).First();

            /*
             * SELECT COUNT(1) AS `Count`,COUNT(1) AS `LongCount`,CAST(SUM(`Users`.`Age`) AS SIGNED) AS `Sum`,MAX(`Users`.`Age`) AS `Max`,MIN(`Users`.`Age`) AS `Min`,AVG(`Users`.`Age`) AS `Average` FROM `Users` AS `Users` LIMIT 0,1
             */

            var count = q.Count();

            /*
             * SELECT COUNT(1) AS `C` FROM `Users` AS `Users`
             */

            var longCount = q.LongCount();

            /*
             * SELECT COUNT(1) AS `C` FROM `Users` AS `Users`
             */

            var sum = q.Sum(a => a.Age);

            /*
             * SELECT CAST(SUM(`Users`.`Age`) AS SIGNED) AS `C` FROM `Users` AS `Users`
             */

            var max = q.Max(a => a.Age);

            /*
             * SELECT MAX(`Users`.`Age`) AS `C` FROM `Users` AS `Users`
             */

            var min = q.Min(a => a.Age);

            /*
             * SELECT MIN(`Users`.`Age`) AS `C` FROM `Users` AS `Users`
             */

            var avg = q.Average(a => a.Age);

            /*
             * SELECT AVG(`Users`.`Age`) AS `C` FROM `Users` AS `Users`
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#4
0
        public static void AggregateQuery()
        {
            IQuery <User> q = context.Query <User>();

            q.Select(a => AggregateFunctions.Count()).First();

            /*
             * SELECT TOP (1) COUNT(1) AS [C] FROM [Users] AS [Users]
             */

            q.Select(a => new { Count = AggregateFunctions.Count(), LongCount = AggregateFunctions.LongCount(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Average = AggregateFunctions.Average(a.Age) }).First();

            /*
             * SELECT TOP (1) COUNT(1) AS [Count],COUNT_BIG(1) AS [LongCount],CAST(SUM([Users].[Age]) AS INT) AS [Sum],MAX([Users].[Age]) AS [Max],MIN([Users].[Age]) AS [Min],CAST(AVG([Users].[Age]) AS FLOAT) AS [Average] FROM [Users] AS [Users]
             */

            var count = q.Count();

            /*
             * SELECT COUNT(1) AS [C] FROM [Users] AS [Users]
             */

            var longCount = q.LongCount();

            /*
             * SELECT COUNT_BIG(1) AS [C] FROM [Users] AS [Users]
             */

            var sum = q.Sum(a => a.Age);

            /*
             * SELECT CAST(SUM([Users].[Age]) AS INT) AS [C] FROM [Users] AS [Users]
             */

            var max = q.Max(a => a.Age);

            /*
             * SELECT MAX([Users].[Age]) AS [C] FROM [Users] AS [Users]
             */

            var min = q.Min(a => a.Age);

            /*
             * SELECT MIN([Users].[Age]) AS [C] FROM [Users] AS [Users]
             */

            var avg = q.Average(a => a.Age);

            /*
             * SELECT CAST(AVG([Users].[Age]) AS FLOAT) AS [C] FROM [Users] AS [Users]
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#5
0
        public static void AggregateQuery()
        {
            IQuery <User> q = context.Query <User>();

            q.Select(a => AggregateFunctions.Count()).First();

            /*
             * SELECT COUNT(1) AS "C" FROM "USERS" "USERS" WHERE ROWNUM < 2
             */

            q.Select(a => new { Count = AggregateFunctions.Count(), LongCount = AggregateFunctions.LongCount(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Average = AggregateFunctions.Average(a.Age) }).First();

            /*
             * SELECT COUNT(1) AS "COUNT",COUNT(1) AS "LONGCOUNT",SUM("USERS"."AGE") AS "SUM",MAX("USERS"."AGE") AS "MAX",MIN("USERS"."AGE") AS "MIN",AVG("USERS"."AGE") AS "AVERAGE" FROM "USERS" "USERS" WHERE ROWNUM < 2
             */

            var count = q.Count();

            /*
             * SELECT COUNT(1) AS "C" FROM "USERS" "USERS"
             */

            var longCount = q.LongCount();

            /*
             * SELECT COUNT(1) AS "C" FROM "USERS" "USERS"
             */

            var sum = q.Sum(a => a.Age);

            /*
             * SELECT SUM("USERS"."AGE") AS "C" FROM "USERS" "USERS"
             */

            var max = q.Max(a => a.Age);

            /*
             * SELECT MAX("USERS"."AGE") AS "C" FROM "USERS" "USERS"
             */

            var min = q.Min(a => a.Age);

            /*
             * SELECT MIN("USERS"."AGE") AS "C" FROM "USERS" "USERS"
             */

            var avg = q.Average(a => a.Age);

            /*
             * SELECT AVG("USERS"."AGE") AS "C" FROM "USERS" "USERS"
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#6
0
 public CustomizeViewForm(IViewContext viewContext, ViewSpec viewSpec)
 {
     InitializeComponent();
     ViewContext        = viewContext;
     ParentColumn       = viewContext.ParentColumn;
     _strikeThroughFont = new Font(listViewColumns.Font, FontStyle.Strikeout);
     availableFieldsTreeColumns.RootColumn = ParentColumn;
     ViewSpec               = OriginalViewSpec = viewSpec;
     tbxViewName.Text       = viewSpec.Name;
     ExistingCustomViewSpec =
         viewContext.CustomViewSpecs.FirstOrDefault(customViewSpec => viewSpec.Name == customViewSpec.Name);
     listViewColumns.SmallImageList = AggregateFunctions.GetSmallIcons();
 }
示例#7
0
        public static void GroupQuery()
        {
            object ret = null;

            var q = context.Query <TestEntity>();

            var gq = q.GroupBy(a => a.F_Int32);

            gq = gq.Having(a => a.F_Int32 > 1 && AggregateFunctions.Count() > 1);

            ret = gq.Select(a => new { a.F_Int32, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.F_Int32), Max = AggregateFunctions.Max(a.F_Int32), Min = AggregateFunctions.Min(a.F_Int32), Avg = AggregateFunctions.Average(a.F_Int32) }).ToList();


            ConsoleHelper.WriteLineAndReadKey();
        }
示例#8
0
        public static void GroupQuery()
        {
            IQuery <User> q = context.Query <User>();

            IGroupingQuery <User> g = q.Where(a => a.Id > 0).GroupBy(a => a.Age);

            g = g.Having(a => a.Age > 1 && AggregateFunctions.Count() > 0);

            g.Select(a => new { a.Age, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Avg = AggregateFunctions.Average(a.Age) }).ToList();

            /*
             * SELECT `Users`.`Age` AS `Age`,COUNT(1) AS `Count`,CAST(SUM(`Users`.`Age`) AS SIGNED) AS `Sum`,MAX(`Users`.`Age`) AS `Max`,MIN(`Users`.`Age`) AS `Min`,AVG(`Users`.`Age`) AS `Avg` FROM `Users` AS `Users` WHERE `Users`.`Id` > 0 GROUP BY `Users`.`Age` HAVING (`Users`.`Age` > 1 AND COUNT(1) > 0)
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#9
0
        public static void GroupQuery()
        {
            IQuery <User> q = context.Query <User>();

            IGroupingQuery <User> g = q.Where(a => a.Id > 0).GroupBy(a => a.Age);

            g = g.Having(a => a.Age > 1 && AggregateFunctions.Count() > 0);

            g.Select(a => new { a.Age, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Avg = AggregateFunctions.Average(a.Age) }).ToList();

            /*
             * SELECT [Users].[Age] AS [Age],COUNT(1) AS [Count],CAST(SUM([Users].[Age]) AS INT) AS [Sum],MAX([Users].[Age]) AS [Max],MIN([Users].[Age]) AS [Min],CAST(AVG([Users].[Age]) AS FLOAT) AS [Avg] FROM [Users] AS [Users] WHERE [Users].[Id] > 0 GROUP BY [Users].[Age] HAVING ([Users].[Age] > 1 AND COUNT(1) > 0)
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#10
0
        public static void GroupQuery()
        {
            IQuery <User> q = context.Query <User>();

            IGroupingQuery <User> g = q.Where(a => a.Id > 0).GroupBy(a => a.Age);

            g = g.Having(a => a.Age > 1 && AggregateFunctions.Count() > 0);

            g.Select(a => new { a.Age, Count = AggregateFunctions.Count(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Avg = AggregateFunctions.Average(a.Age) }).ToList();

            /*
             * SELECT "USERS"."AGE" AS "AGE",COUNT(1) AS "COUNT",SUM("USERS"."AGE") AS "SUM",MAX("USERS"."AGE") AS "MAX",MIN("USERS"."AGE") AS "MIN",AVG("USERS"."AGE") AS "AVG" FROM "USERS" "USERS" WHERE "USERS"."ID" > 0 GROUP BY "USERS"."AGE" HAVING ("USERS"."AGE" > 1 AND COUNT(1) > 0)
             */

            ConsoleHelper.WriteLineAndReadKey();
        }
示例#11
0
 protected void PageInit()
 {
     try
     {
         if (userInfo == null)
         {
             MessageBox.Show(this, "system_alert", "用户未绑定");
             return;
         }
         else
         {
             if (hotelInfo == null)
             {
                 MessageBox.Show(this, "system_alert", "酒店信息异常");
                 return;
             }
             else
             {
                 var roomList = context.Query <Cabinet>().Where(o => o.hotel == hotelInfo.id).LeftJoin <Cell>((a, b) => a.mac.Equals(b.mac))
                                .Where((a, b) => b.part == 0 && b.product_id == null)
                                .Select((a, b) => new
                 {
                     a.mac,
                     a.online,
                     a.room
                 }).GroupBy(o => o.mac)
                                .Select(o => new { mac = AggregateFunctions.Max(o.mac), online = AggregateFunctions.Max(o.online), room = AggregateFunctions.Max(o.room) }).ToList();
                 rooms_rp.DataSource = roomList;
                 rooms_rp.DataBind();
                 if (roomList.Count() > 0)
                 {
                     roomSelectDiv.Visible = true;
                     empty_div.Visible     = false;
                 }
                 else
                 {
                     roomSelectDiv.Visible = false;
                     empty_div.Visible     = true;
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, "system_alert", "数据异常");
     }
 }
示例#12
0
        protected List <SaleProduct> Query(Expression <Func <OrderInfo, bool> > _where, out decimal daySale, out decimal totalAmount)
        {
            var cabinetList = context.Query <Cabinet>().Where(o => o.hotel == hotelInfo.id).ToList();
            var query       = context.Query <OrderInfo>().Where(_where).LeftJoin <Product>((a, b) => a.product == b.id)
                              .Select((a, b) => new SaleProduct
            {
                name     = b.name,
                code     = b.code,
                price1   = a.price1,
                id       = a.product,
                saleTime = a.date
            });

            var groupQuery = query.GroupBy(o => o.id).Select(o => new SaleProduct
            {
                minTime     = AggregateFunctions.Min(o.saleTime),
                maxTime     = AggregateFunctions.Max(o.saleTime),
                name        = AggregateFunctions.Max(o.name),
                code        = AggregateFunctions.Max(o.code),
                salesCount  = AggregateFunctions.Count(),
                totalAmount = AggregateFunctions.Sum(o.price1)
            });
            var list = groupQuery.ToList();

            if (list.Count != 0)
            {
                totalAmount = list.Sum(o => o.totalAmount).ObjToInt(0).CentToRMB(0);
                var totalDay = list.Max(o => o.maxTime).Subtract(list.Min(o => o.minTime)).Days;

                if (totalDay != 0 && cabinetList.Count != 0)
                {
                    daySale = Math.Round(totalAmount / totalDay / cabinetList.Count);
                }
                else
                {
                    daySale = 0;
                }
            }
            else
            {
                daySale     = 0;
                totalAmount = 0;
            }

            return(list);
        }
示例#13
0
        public static void AggregateFunctionTest()
        {
            MsSqlContext context = new MsSqlContext(DbHelper.ConnectionString);

            var q = context.Query <User>();

            q = q.Where(a => a.Id > 0);
            var xxx = q.Select(a => AggregateFunctions.Count()).First();

            q.Select(a => new { Count = AggregateFunctions.Count(), LongCount = AggregateFunctions.LongCount(), Sum = AggregateFunctions.Sum(a.Age), Max = AggregateFunctions.Max(a.Age), Min = AggregateFunctions.Min(a.Age), Average = AggregateFunctions.Average(a.Age) }).First();
            var count     = q.Count();
            var longCount = q.LongCount();
            var sum       = q.Sum(a => a.Age);
            var max       = q.Max(a => a.Age);
            var min       = q.Min(a => a.Age);
            var avg       = q.Average(a => a.Age);

            Console.WriteLine(1);
        }
示例#14
0
        protected void PageInit(string sort = "down")
        {
            var list = context.Query <Cabinet>().Where(o => o.hotel == hotelInfo.id).LeftJoin <OrderInfo>((a, b) => a.mac.Equals(b.cabinet_mac))
                       .Select((a, b) => new CabinetQuery()
            {
                mac  = a.mac,
                room = a.room,
                last_offline_date = a.last_offline_date,
                online            = a.online,
                salesAmount       = b.price1
            })
                       .GroupBy(o => o.mac)
                       .Select(o => new {
                mac         = AggregateFunctions.Max(o.mac),
                room        = AggregateFunctions.Max(o.room),
                offline     = AggregateFunctions.Max(o.last_offline_date),
                online      = AggregateFunctions.Max(o.online),
                salesAmount = AggregateFunctions.Sum(o.salesAmount)
            }).ToList()
                       .Select(
                o => new {
                mac         = o.mac,
                room        = o.room,
                online      = o.online,
                offline     = (o.online.HasValue && o.online.Value) ? "--" : o.offline.HasValue ? (DateTime.Now - o.offline.Value).Hours + " H" : "999 H",
                salesAmount = o.salesAmount
            }
                ).ToList();

            room_count.InnerHtml = list.Count(o => o.salesAmount > 0).ObjToStr();
            if (sort.Equals("up"))
            {
                psy_rp.DataSource = list.OrderBy(o => o.salesAmount);
                psy_rp.DataBind();
            }
            else if (sort.Equals("down"))
            {
                psy_rp.DataSource = list.OrderByDescending(o => o.salesAmount);
                psy_rp.DataBind();
            }
        }
示例#15
0
        protected void PageInit()
        {
            var layout = context.Query <CabinetLayout>().FirstOrDefault(o => o.hotel_id == hotelInfo.id);

            if (layout == null)
            {
                MessageBox.Show(this, "system_alert", "酒店未设置商品");
                return;
            }
            else
            {
                var products = layout.products.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(o => o.ObjToInt(0)).ToList();
                var query    = context.Query <Product>()
                               .LeftJoin <OrderInfo>((a, b) => a.id == b.product)
                               .LeftJoin <Cabinet>((a, b, c) => c.mac == b.cabinet_mac)
                               .Where((a, b, c) => (c.hotel == hotelInfo.id || c.hotel == null) && products.Contains(a.id))
                               .Select((a, b, c) => new {
                    id        = a.id,
                    image     = a.image,
                    price1    = a.price1,
                    code      = a.code,
                    name      = a.name,
                    salePrice = b.price1
                }).GroupBy(o => o.id)
                               .Select(o => new {
                    id          = o.id,
                    name        = o.name,
                    code        = o.code,
                    image       = o.image,
                    price1      = o.price1,
                    salesAmount = AggregateFunctions.Sum(o.salePrice)
                });
                var list = query.ToList();
                goods_rp.DataSource = list;
                goods_rp.DataBind();
                goods_count.InnerText = (list.Count).ObjToStr();
            }
        }
示例#16
0
        protected List <SaleProduct> Query(Expression <Func <OrderInfo, bool> > _where, out int totalSum, out decimal totalAmount)
        {
            var query = context.Query <OrderInfo>().Where(_where).LeftJoin <Product>((a, b) => a.product == b.id)
                        .Select((a, b) => new SaleProduct
            {
                name     = b.name,
                code     = b.code,
                price1   = a.price1,
                id       = a.product,
                saleTime = a.date
            });

            var groupQuery = query.GroupBy(o => o.id).Select(o => new SaleProduct
            {
                minTime     = AggregateFunctions.Min(o.saleTime),
                maxTime     = AggregateFunctions.Max(o.saleTime),
                name        = AggregateFunctions.Max(o.name),
                code        = AggregateFunctions.Max(o.code),
                salesCount  = AggregateFunctions.Count(),
                totalAmount = AggregateFunctions.Sum(o.price1)
            });
            var list = groupQuery.ToList();

            if (list.Count != 0)
            {
                totalAmount = list.Sum(o => o.totalAmount).ObjToInt(0).CentToRMB(0);

                totalSum = list.Sum(o => o.salesCount).ObjToInt(0);
            }
            else
            {
                totalSum    = 0;
                totalAmount = 0;
            }

            return(list);
        }
 public bool IsOKPeriod(AddPeriodTimeInput p)
 {
     return(this.DbContext.Query <PeriodTime>().Where(a => a.SeveraWeeks == p.SeveraWeeks && a.StratTime == p.StratTime && a.EndTime == p.EndTime).Select(a => AggregateFunctions.Count()).First() == 0);
 }
 public int SelectNumforKeyName(string Name)
 {
     return(this.DbContext.Query <MALU_DefaultSetting>().Where(a => a.KeyName == Name).Select(a => AggregateFunctions.Count()).First());
 }
 public AggregateField(string field, AggregateFunctions aggregateFunction)
 {
     this.Field             = field;
     this.AggregateFunction = aggregateFunction;
 }
示例#20
0
        public AppointmentData Add(AddAppointmentDataInput input)
        {
            AppointmentData entity = new AppointmentData();
            string          _Code  = (this.DbContext.Query <AppointmentData>().Where(a => a.BusinessID == input.BusinessID).Select(a => AggregateFunctions.Count()).First() + 1).ToString();

            while (_Code.Length < 4)
            {
                _Code = "0" + _Code;
            }
            entity.Id              = IdHelper.CreateGuid();
            entity.CreateTime      = DateTime.Now;
            entity.AppointmentDate = input.AppointmentDate;
            entity.BusinessID      = input.BusinessID;
            entity.FileID          = input.FileID;
            entity.MALU_Code       = input.Code + _Code;
            entity.MamberID        = input.MamberID;
            entity.State           = input.State;
            return(this.DbContext.Insert(entity));
        }
示例#21
0
 /// <summary>
 /// Initializes a new instance of a <see cref="AggregateField"/>.
 /// </summary>
 /// <param name="function">The <see cref="AggregateFunctions">Aggregate Function</see></param>
 /// <param name="name">The Field Name</param>
 /// <param name="tableAlias">The Table Alias</param>
 /// <param name="alternateName">An alternative name to give to the field</param>
 public AggregateField(AggregateFunctions function, string name, string tableAlias, string alternateName) : this(function, name, tableAlias)
 {
     AlternateName = alternateName;
 }
示例#22
0
 /// <summary>
 /// Initializes a new instance of a <see cref="AggregateField"/>.
 /// </summary>
 /// <param name="function">The <see cref="AggregateFunctions">Aggregate Function</see></param>
 /// <param name="name">The Field Name</param>
 /// <param name="tableAlias">The Table Alias</param>
 public AggregateField(AggregateFunctions function, string name, string tableAlias) : this(function, name)
 {
     TableAlias = tableAlias;
 }
示例#23
0
 /// <summary>
 /// Initializes a new instance of a <see cref="AggregateField"/>.
 /// </summary>
 /// <param name="function">The <see cref="AggregateFunctions">Aggregate Function</see></param>
 /// <param name="name">The Field Name</param>
 public AggregateField(AggregateFunctions function, string name) : base(name)
 {
     Function  = function;
     base.Type = FieldTypes.Aggregate;
 }
示例#24
0
		protected override IReadOnlyList<OracleColumn> BuildColumns()
		{
			var columns = new List<OracleColumn>();
			var pivotColumns = new List<OracleSelectListColumn>();

			var pivotForColumnList = PivotClause[NonTerminals.PivotForClause, NonTerminals.IdentifierOrParenthesisEnclosedIdentifierList];
			if (pivotForColumnList != null)
			{
				var aggregatedColumnNames =
					SourceReferenceContainer.ColumnReferences
						.Where(c => AggregateFunctions.Any(f => f.SourcePosition.Contains(c.RootNode.SourcePosition)))
						.Select(c => c.NormalizedName);

				var groupingColumns = pivotForColumnList
					.GetDescendants(Terminals.Identifier)
					.Select(i => i.Token.Value.ToQuotedIdentifier())
					.Concat(aggregatedColumnNames)
					.ToHashSet();

				switch (PivotClause.Id)
				{
					case NonTerminals.PivotClause:
						var sourceColumns = SourceReference.Columns
							.Where(c => !groupingColumns.Contains(c.Name))
							.Select(c => c.Clone());

						columns.AddRange(sourceColumns);

						var withXmlTransformation = PivotClause[Terminals.Xml] != null;
						if (withXmlTransformation)
						{
							var xmlColumnName = String.Join("_", groupingColumns.Select(c => c.Trim('"')));
							if (xmlColumnName.Length > 26)
							{
								xmlColumnName = xmlColumnName.Substring(0, 26);
							}

							var xmlColumn =
								new OracleColumn
								{
									Name = $"\"{xmlColumnName}_XML\"",
									DataType = OracleDataType.XmlType,
									Nullable = true
								};

							columns.Add(xmlColumn);
						}
						else
						{
							pivotColumns.AddRange(ResolvePivotColumns());
							columns.AddRange(pivotColumns.Select(c => c.ColumnDescription));
						}

						break;

					case NonTerminals.UnpivotClause:
						var unpivotColumnSources = new List<StatementGrammarNode>();
						var unpivotedColumns = new HashSet<string>();
						var unpivotColumnSelectorValues = new List<StatementGrammarNode>();
						var columnTransformations = PivotClause[NonTerminals.UnpivotInClause].GetDescendants(NonTerminals.UnpivotValueToColumnTransformationList);
						var groupingColumnsNullable = false;
						foreach (var columnTransformation in columnTransformations)
						{
							unpivotedColumns.UnionWith(columnTransformation.GetDescendants(Terminals.Identifier).Select(t => t.Token.Value.ToQuotedIdentifier()));
							var columnSelectorValue = columnTransformation[NonTerminals.UnpivotValueSelector, NonTerminals.NullOrStringOrNumberLiteralOrParenthesisEnclosedStringOrIntegerLiteralList];
							if (columnSelectorValue != null)
							{
								unpivotColumnSelectorValues.Add(columnSelectorValue);
								groupingColumnsNullable |= columnSelectorValue.TerminalCount == 1 || String.Equals(columnSelectorValue.FirstTerminalNode.Id, Terminals.Null);
							}

							unpivotColumnSources.AddIfNotNull(columnTransformation[NonTerminals.IdentifierOrParenthesisEnclosedIdentifierList]);
						}

						var unpivotColumnDataTypes = OracleDataType.FromUnpivotColumnSelectorValues(unpivotColumnSelectorValues);
						AreUnpivotColumnSelectorValuesValid = unpivotColumnDataTypes != null;

						UnpivotColumnSelectorValues = unpivotColumnSelectorValues.AsReadOnly();
						UnpivotColumnSources = unpivotColumnSources.AsReadOnly();

						columns.AddRange(SourceReference.Columns
							.Where(c => !unpivotedColumns.Contains(c.Name))
							.Select(c => c.Clone()));

						columns.AddRange(groupingColumns.Select(
							(c, i) =>
								new OracleColumn
								{
									Name = c,
									Nullable = groupingColumnsNullable,
									DataType = groupingColumns.Count == unpivotColumnDataTypes?.Count
										? unpivotColumnDataTypes[i]
										: OracleDataType.Empty
								}));

						var unpivotColumnsNullable = PivotClause[NonTerminals.UnpivotNullsClause, NonTerminals.IncludeOrExclude, Terminals.Include] != null;
						var unpivotColumns = PivotClause[NonTerminals.IdentifierOrParenthesisEnclosedIdentifierList].GetDescendants(Terminals.Identifier);
						columns.AddRange(
							unpivotColumns.Select(
								i => new OracleColumn
								{
									Name = i.Token.Value.ToQuotedIdentifier(),
									DataType = OracleDataType.Empty,
									Nullable = unpivotColumnsNullable
								}));

						break;
				}
			}

			PivotColumns = pivotColumns.AsReadOnly();

			return columns.AsReadOnly();
		}
示例#25
0
        public List <SelBusinessInput> GetBusListByPlace(string PlaceId)
        {
            var q = this.DbContext.Query <MALU_Business>().LeftJoin(this.DbContext.Query <PlaceInfo>(), (b, p) => b.PlaceId == p.Id)
                    .LeftJoin(this.DbContext.Query <PeriodTime>(), (b, p, per) => b.PeriodTimeID == per.Id).
                    LeftJoin(this.DbContext.Query <TransactionInfo>(), (b, p, per, t) => b.TransactionID == t.Id);
            List <SelBusinessInput> view = q.Select((b, p, per, t) => new SelBusinessInput
            {
                Id             = b.Id,
                AppointmentNum = b.AppointmentNum,
                TransactionID  = b.TransactionID,
                PlaceName      = p.PlaceName,
                PlaceAdderss   = p.Address,
                PlaceId        = b.PlaceId,
                TranName       = t.TransactionName,
                PeriodTimeId   = per.Id,
                PeriodTime     = per.StratTime + "-" + per.EndTime,
            }).Where(a => a.PlaceId == PlaceId).ToList();

            for (int i = 0; i < view.Count; i++)
            {
                string BiD = view[i].Id;
                view[i].LineUpNumber = this.DbContext.Query <AppointmentData>().Where(a => a.BusinessID == BiD && a.State != -1).Select(a => AggregateFunctions.Count()).First();
                try
                {
                    view[i].NowAppCode = this.DbContext.Query <AppointmentData>().Where(a => a.BusinessID == BiD && a.State == 1).Select(a => a.MALU_Code).First();
                }
                catch {
                    view[i].NowAppCode = "";
                }
            }
            return(view);
        }